VSTO c# Excelブックを読み取り専用/書き込みモードにする方法

C#

VSTOはVisual Studio Tools for Office の略で、officeのアドインやマクロ付きドキュメントを、VB.netやc#などで記述できるフレームワークです。Visual Studioで開発することができ、VBAとオサラバできるMS公式フレームワークです。

この記事では、c#で、Excelブックを読み取り専用にしたり、読み取り専用を解除するコードを紹介します。

ブックのアクセスモード(読み取り専用/書き込み許可)を変更するコード

以下はアクティブワークブックのファイルアクセスを変更する関数です。

        public static void ChangeFileAccess(XlFileAccess xl)
        {
            try
            {
                Excel.Workbook activeWorkbook = Globals.ThisAddIn.Application.ActiveWorkbook;
                activeWorkbook.ChangeFileAccess(xl);
            }catch(Exception ex)
            {
           }
           return;
        }

catch していて何も書いていないのはバグではなく、未保存のブックに対してコードが実行された場合、無視してほしいためです。

XlFileAccessは列挙型で、名前空間はMicrosoft.Office.Interop.Excel.XlFileAccessになります。

オブジェクトのアクセスモードを指定する列挙型で、以下の値をとります。

  • xlReadOnly : 読み取り専用になります。
  • xlReadWrite : 読み取りと書き込みが可能になります

この関数の使い方

つまり、以下のようにxlReadOnlyを指定して関数を呼び出すと、読み取り専用に変更されます。

    ThisAddIn.ChangeFileAccess(Microsoft.Office.Interop.Excel.XlFileAccess.xlReadOnly);

以下のようにxlReadWriteを指定して関数を呼び出すと、読み取り書き込みモードに変更されます。

    ThisAddIn.ChangeFileAccess(Microsoft.Office.Interop.Excel.XlFileAccess.xlReadWrite);

ソースコード全文

ソースコード全文は以下のgithubリポジトリに格納しています。

コンパイルすれば動作しますので、Visual Studioをお持ちの方は遊んでみてください。

GitHub - harus0313/cliesx
Contribute to harus0313/cliesx development by creating an account on GitHub.

コメント

タイトルとURLをコピーしました