2017-06-29 10 views
1

時々、私のExcel Addinが無効になっているCOMアドインが無効になると、次のコードで有効にすることができます。しかし、無効になったアイテムで終了した場合は、このコードを使用して有効にすることはできません。無効なアイテムを有効にする方法はありますか?私がregeditを使ってそれを行うことができるかどうかはわかりません。プログラムでアドインを有効にする

私は、これが最良かつ最も効率的なソリューションでした{"Operation aborted (Exception from HRESULT: 0x80004004 (E_ABORT))"}

xl.Application myApp = new xl.Application(); 

    foreach (COMAddIn currentAddIn in myApp.COMAddIns) 
    { 
     if (currentAddIn.Description == "Create Excel AddIn" && !currentAddIn.Connect) 
     { 
      try 
      { 


       currentAddIn.Connect = true; 
      } 
      catch (Exception) 
      { 
       CommonMethods.ExceptionHandler("Create tab couldn't be enabled", new StackTrace(true).GetFrame(0).GetFileLineNumber(), new StackTrace(true).GetFrame(0).GetMethod()); 
      } 


      break; 
     } 

    } 


    return false; 
} 
+1

他のユーザーを無効にすることはできません。これが可能なら世界はどうなるのだろうか? https://blogs.msdn.microsoft.com/oldnewthing/20040216-00/?p=40603 – mjwills

+0

@mjwillsは、再度有効にするためにregeditに何かを設定することはできませんか? –

+0

これは他のユーザーのためのテスト目的ではありません –

答えて

1

COM例外を取得します。

RegistryKey myKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Office\Excel\Addins\Create.ExcelAddIn", true); 
     if (myKey != null) 
     { 
      myKey.SetValue("LoadBehavior", "3", RegistryValueKind.DWord); 
      myKey.Close(); 
     } 
+1

を仲間にすることができますこんにちは、喜んでそれは働いて、それは良いですが、 gistryKeyは、あなたがDisposeしなければならない管理されていないリソースです。そのため、リンクでは 'using 'を使用したことを示しています。例えば' using(subkey = key.OpenSubKey(kn)){ –

-1

私は完全に無効にするアドインのための知っている唯一の方法は、以下の場所にレジストリキーを削除することですが、Excelが開いている間、それは、(Officeバージョン16.0に変更)に行うことができません:

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Resiliency\DisabledItems\ 
関連する問題