Excelアプリケーション操作 | C#でExcelを読み込んで操作する方法を公開|C# Excel操作テクニック.NET

メソッドに貼り付けるだけで機能するソースコードを多数用意しています。

Excelアプリケーション操作

Excelアプリケーション(Excel.exe)のパスを取得する

Excel.exeのフォルダの完全パスを取得します。

※操作中のファイルパスではありません、注意してください。

(32bit OSでのデフォルトはC:\Program Files\Microsoft Office…あたりだと思います。)

{
            // Excel操作用オブジェクト
            Microsoft.Office.Interop.Excel.Application xlApp = null;
            

            // Excelアプリケーション生成
            xlApp = new Microsoft.Office.Interop.Excel.Application();

            // ◆Exe格納パスをメッセージボックスに表示◆
            // Pathプロパティ
            System.Windows.Forms.MessageBox.Show(xlApp.Path);

            // Excelアプリケーションを解放
            xlApp.Quit();
            System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);

 }

ExcelBook、アプリケーションを閉じる

Excelを閉じる処理です。

「◆Bookを閉じる◆」で、WorkBookを閉じる処理を行い、
「◆Excelアプリケーション閉じる◆」で、アプリケーションの終了処理を行っています。

{
    // Excel操作用オブジェクト
    Application xlApp = null;
    Workbooks xlBooks = null;
    Workbook xlBook = null;
    Sheets xlSheets = null;
    Worksheet xlSheet = null;

    // Excelアプリケーション生成
    xlApp = new Application();
    xlApp.DisplayAlerts = false;    // 確認メッセージを非表示に設定

    // 新規のExcelブックを開く
    xlBooks = xlApp.Workbooks;
    xlBook = xlBooks.Add();

    // シートを選択する
    xlSheets = xlBook.Worksheets;
    xlSheet = xlSheets[1] as Worksheet; // 1シート目を操作対象に設定する

    // 確認のためExcelを表示させて3秒停止
    xlApp.Visible = true;
    System.Threading.Thread.Sleep(3000);

    // ■■■以下、COMオブジェクトの解放■■■

    // Sheet解放
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets);

    // ◆Bookを閉じる◆
    // Closeメソッド
    xlBook.Close();
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks);

    // アラートを元に戻す
    xlApp.DisplayAlerts = true;

    // ◆Excelアプリケーション閉じる◆
    // Quitメソッド
    xlApp.Quit();
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);

}

Excelの確認メッセージを非表示に設定する(アラート設定)

操作対象のExcelアプリケーションのDisplayAlertsプロパティを取得・設定します。

DisplayAlertsにFalseを設定すると、Excelを閉じるときなどに表示されるメッセージの表示/非表示を制御できます。

以下の処理を実行すると、表示されたExcelの編集→閉じる操作をしても保存要否の確認メッセージが表示されません。

逆にxlApp.DisplayAlertsにTrueを設定すると、確認メッセージが表示されるようになります。

        {

            // 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();

            // ◆アラートメッセージ非表示設定◆
            xlApp.DisplayAlerts = false;

            // 新規のExcelブックを開く
            // Addメソッド
            xlBooks = xlApp.Workbooks;
            xlBook = xlBooks.Add();

            // シートを選択する
            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 バージョン
2010 14.0
2007 12.0
2003 11.0
2002 10.0
2000 9.0
97 8.0

 

取得方法は以下のようになります。


 {

     // Excel操作用オブジェクト
     Application xlApp = null;

     // Excelアプリケーション生成
     xlApp = new Application();

     // ◆バージョン番号をメッセージボックスに表示◆
     // Versionプロパティ
     System.Windows.Forms.MessageBox.Show(xlApp.Version);

     // Excelアプリケーションを解放
     xlApp.Quit();
     System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);

 }