メソッドに貼り付けるだけで機能するソースコードを多数用意しています。
シート操作
複数シートを選択する
複数シートを選択状態にするコードです。
注意点は、_Worksheet.Selectメソッドの引数です。
ループ処理で対象シートを選択していますが、最初のループのみ引数にはTrueを設定し、以降のシート選択時はFalseを設定しています。
この引数は、「すでに選択しているシートを選択解除するかどうか」の判定です。
{ // 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; // Excelアプリケーション生成 xlApp = new Microsoft.Office.Interop.Excel.Application(); // 既存のBookを開く xlBooks = xlApp.Workbooks; xlBook = xlBooks.Open(System.IO.Path.GetFullPath(@"..\..\..\data\work01.xlsx")); // シートを取得する xlSheets = xlBook.Worksheets; // 1シート目を操作対象に設定する // 作業用変数 int i = 0; // ループカウンタ bool bActivate = true; // シート選択時の引数 // ◆Sheet1とSheet2を選択状態にする◆ // (Sheet1がアクティブ状態) while (i < 2) { // 2シート目以降はFalseを設定 if (i > 0) bActivate = false; i = i + 1; // ※Worksheets[n]はオブジェクト型を返すため、Worksheet型にキャスト xlSheet = xlSheets[i] as Microsoft.Office.Interop.Excel.Worksheet; // iシート目を選択状態に設定 xlSheet.Select(bActivate); // シートオブジェクト解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet); } // 表示 xlApp.Visible = true; // ■■■以下、COMオブジェクトの解放■■■ // Sheet解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets); // Book解放 //xlBook.Close(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks); // Excelアプリケーションを解放 //xlApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp); }
Sheetの名称を取得・設定する
操作中Sheetの名称を取得・設定します。
注意点は、Sheet[n]をWorkSheetオブジェクトに設定する際はキャストが必要だということです。
{ // 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; // Excelアプリケーション生成 xlApp = new Microsoft.Office.Interop.Excel.Application(); // 新規のExcelブックを開く xlBooks = xlApp.Workbooks; xlBook = xlBooks.Add(); // シートを選択する xlSheets = xlBook.Worksheets; // 1シート目を操作対象に設定する // ※Worksheets[n]はオブジェクト型を返すため、Worksheet型にキャスト xlSheet = xlSheets[1] as Microsoft.Office.Interop.Excel.Worksheet; // 表示 xlApp.Visible = true; // Sheet名表示 MessageBox.Show(xlSheet.Name); // ◆シート1の名称を変更する◆ // Nameプロパティ xlSheet.Name = "Sheet999"; // Sheet名表示 MessageBox.Show(xlSheet.Name); // ■■■以下、COMオブジェクトの解放■■■ // Sheet解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets); // Book解放 //xlBook.Close(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks); // Excelアプリケーションを解放 //xlApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp); }
ExcelのSheet数を取得する
操作対象Excelのシート数を取得します。
{ // 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; // Excelアプリケーション生成 xlApp = new Microsoft.Office.Interop.Excel.Application(); // 既存のBookを開く xlBooks = xlApp.Workbooks; xlBook = xlBooks.Open(System.IO.Path.GetFullPath(@"..\..\..\data\work01.xlsx")); // シートを取得する xlSheets = xlBook.Worksheets; // 表示 xlApp.Visible = true; // ◆シート数取得◆ // Countプロパティ System.Windows.Forms.MessageBox.Show(xlSheets.Count.ToString()); // ■■■以下、COMオブジェクトの解放■■■ // Sheet解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets); // Book解放 //xlBook.Close(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks); // Excelアプリケーションを解放 //xlApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp); }
既存のExcelファイルを開く
既存のExcelファイルを開く処理です。
新規ファイルを開く際はAddメソッドを使用しましたが、既存ファイルを開く場合はOpenメソッドを使用します。
xlBooks.Open(fileNm)の、[fileNm]には、対象ファイルの絶対パスを指定します。
// 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; // Excelアプリケーション生成 xlApp = new Microsoft.Office.Interop.Excel.Application(); // ◆操作対象のExcelブックを開く◆ // Openメソッド xlBooks = xlApp.Workbooks; xlBook = xlBooks.Open(System.IO.Path.GetFullPath(@"..\..\..\data\work01.xlsx")); // シートを選択する xlSheets = xlBook.Worksheets; xlSheet = xlSheets[1] as Microsoft.Office.Interop.Excel.Worksheet; // 1シート目を操作対象に設定する // 表示 xlApp.Visible = true; // ■■■以下、COMオブジェクトの解放■■■ // Sheet解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets); // Book解放 //xlBook.Close(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks); // Excelアプリケーションを解放 //xlApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
Excelファイルを新規で作成する
Excelファイルを新規で開く処理です。
以下の処理を実行すると、Excelの新規Bookが1つ起動します。
// 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; // Excelアプリケーション生成 xlApp = new Microsoft.Office.Interop.Excel.Application(); // ◆新規のExcelブックを開く◆ // Addメソッド xlBooks = xlApp.Workbooks; xlBook = xlBooks.Add(); // シートを選択する xlSheets = xlBook.Worksheets; xlSheet = xlSheets[1] as Microsoft.Office.Interop.Excel.Worksheet; // 1シート目を操作対象に設定する // 表示 xlApp.Visible = true; // 3秒停止 System.Threading.Thread.Sleep(3000); // ■■■以下、COMオブジェクトの解放■■■ // Sheet解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets); // Book解放 xlBook.Close(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks); // Excelアプリケーションを解放 xlApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);