メソッドに貼り付けるだけで機能するソースコードを多数用意しています。
シート操作
複数シートを選択する
複数シートを選択状態にするコードです。
注意点は、_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);