3

現在開いているMicrosoftExcelのインスタンスでExcelワークシートを開くにはどうすればよいですか?コードを使用すると、Excelの新しいインスタンスが開きます。

 private Excel.Application xlApp;
 private Excel.Workbook xlWorkBook;
 private Excel.Worksheet xlWorkSheet;

 xlApp = new Excel.Application();
 xlApp.Visible = true;

 xlWorkBook = xlApp.Workbooks.Open(textBox1.Text);
 xlWorkSheet = (Excel.Worksheet)xlWorkBook.ActiveSheet;
4

1 に答える 1

3

次のような操作を実行して、実行中のExcelインスタンスへの参照を取得できます(存在する場合)。

public Excel.Application TryGetExistingExcelApplication()
{
    try
    {
        object o = Marshal.GetActiveObject("Excel.Application");
        return (Excel.Application)o;
    }
    catch (COMException)
    {
        // Probably there is no existing Excel instance running, return null
        return null;
    }
}

実行中のインスタンスへの参照を取得すると、そのワークブックコレクションにアクセスできます。

注意点:既存のExcelインスタンスを自動化しようとすると、「サーバービジー」例外が発生する可能性があります。これを回避するために、IOleMessageFilterエラーハンドラーを実装できます。この記事では、VisualStudioを自動化する方法について説明します。テクニックはExcelの自動化と同じです。

于 2012-09-17T10:31:55.250 に答える