2016-11-18 8 views
2

現在Visual Studio Tools for VSTOを使用してMSExcel用のアドインを開発中です。とにかく、私はそれを見つけて問題に遭遇するまでではなく、ほとんど終わっています。VSTO ThisWorkbookプロパティ

現在、私のC#コードは、ActiveWorkbookのプロパティを利用しています。しかし、Excelの別のインスタンスが開いていて、その特定のインスタンスがフォーカスを取得すると、そのアクティブブックでコードが実行されることがわかりました。

以下の私のコードを参照してください。

public void AddWorkSheet(string wsName, Excel.XlSheetVisibility visibility) 
    { 

     Excel.Workbook currentWorkBook =Globals.ThisAddIn.Application.ActiveWorkbook; 
     if (!IsSheetExists(wsName, currentWorkBook)) 
     { 
      Excel.Worksheet newWorkSheet; 
      newWorkSheet = currentWorkBook.Sheets.Add(); 
      newWorkSheet.Visible = visibility; 
      newWorkSheet.Name = wsName; 
      Marshal.ReleaseComObject(newWorkSheet); 
     } 
     Marshal.ReleaseComObject(currentWorkBook); 
    } 

私が見つけたたいことは、それがアクティブであるかどうか、私は関係なく、特定のワークブックにワークブックを設定することができる方法です。

答えて

-1

あなたの質問に言及しているように、ActiveWorkbookは現在アクティブなワークブックを提供します。名前を考えれば、それには何も予期せぬことはない。

特定のブックにシートを追加する場合は、固定ブックブックの参照で作業する必要があります。固定ブックのリファレンスを使用するには、いくつかのオプションがあります。最も簡単なのは、名前を知っていれば、名前を使ってその特定のブックを取得することです。

は、ブック、Googleだけビットを参照するので、多くの方法があり、あなたがこのような例を得る:

http://www.techrepublic.com/blog/10-things/10-ways-to-reference-excel-workbooks-and-sheets-using-vba/(それはVBAのですが、あなたはトラブルC#にするに特異的に新しい質問をすることポーティングを持っている場合は、あなたのニーズ)

+0

こんにちは!私の質問にお答えいただきありがとうございます。 VBAには、指定されたファイルパスを使用してリファレンスワークブックを変更する機能があるので、アクティブな場合でも新しいワークシートを追加した場合でも追加できます。私はそれを私の頭の上に持っていますが、私はC#でVSTOアドインでこれを行う方法について正しいコードを考え出すことができません。ありがとうございました。 :) –

関連する問題