C#で、既に開いているExcelを操作したい。

実現したいこと

既に開いているExcelファイルを操作したい。

前提

以下のソースで「_soukumiExcelPath」にあたる、
既に開いているExcelを操作したいのですが、
別で「読み取り専用」で開いてきます。

Microsoft.Office.Interop.Excel.Application xlApp = null; Microsoft.Office.Interop.Excel.Workbooks xlBooks = null; Microsoft.Office.Interop.Excel.Workbook xlBook = null; Microsoft.Office.Interop.Excel.Sheets xlSheets = null; Microsoft.Office.Interop.Excel.Worksheet xlSheet = null; Microsoft.Office.Interop.Excel.Range xlCells = null; // Excelアプリケーション生成 xlApp = new Microsoft.Office.Interop.Excel.Application(); // ExcelOpenメソッド xlBooks = xlApp.Workbooks; xlBook = xlBooks.Open(_soukumiExcelPath); // シートを選択する xlSheets = xlBook.Worksheets; xlSheet = xlSheets[1] as Microsoft.Office.Interop.Excel.Worksheet; // 1シート目を操作対象に設定する // 表示 xlApp.Visible = true; // セルのオブジェクト  xlCells = xlSheet.Cells;
エラーメッセージ

該当のソースコード

C#

1 // Excelアプリケーション生成2 xlApp = (Microsoft.Office.Interop.Excel.Application)Marshal.GetActiveObject("Excel.Application");3 4 5 // 開かれているすべてのワークブックを調べる6 foreach (Microsoft.Office.Interop.Excel.Workbook workbook in xlApp.Workbooks)7 {8 if (workbook.Name == Path.GetFileNameWithoutExtension(_soukumiExcelPath))9 {10 xlBook = workbook;11 break; // 見つかったらループを終了12 }13 }``` 14 15### 試したこと 16 17上記のソースをchatGPTが書き出してくれて、試したのですが、 18なぜか、xlApp.Workbooks を in する時に、 19勝手にforeachのループを外れて、次の処理へいってしまいます。 20  21ただ開いているExcelを指定したいだけなのに、どんづまってしまいました。 22ご教授のほど、なにとぞよろしくお願いいたします。 23 24### 補足情報(FW/ツールのバージョンなど) 25 26ここにより詳細な情報を記載してください。

コメントを投稿

0 コメント