Excel Macro EnabledワークブックのVBAコードを管理する
C#でVBAモジュールを追加
次のサンプルコードは、新しいワークブックを作成し、新しいVBAモジュールとマクロコードを追加し、出力をXLSM形式で保存します。作業結果のXLSMファイルをMicrosoft Excelで開いて開発者 > Visual Basicメニューコマンドをクリックすると、「TestModule」というモジュールが表示され、その中に次のマクロコードが表示されます。
Sub ShowMessage()
MsgBox "Welcome to Aspose!"
End Sub
VBAモジュールとマクロコードを含む出力XLSMファイルを生成するためのサンプルコードは次のとおりです。
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create new workbook | |
Workbook workbook = new Workbook(); | |
// Access first worksheet | |
Worksheet worksheet = workbook.Worksheets[0]; | |
// Add VBA Module | |
int idx = workbook.VbaProject.Modules.Add(worksheet); | |
// Access the VBA Module, set its name and codes | |
Aspose.Cells.Vba.VbaModule module = workbook.VbaProject.Modules[idx]; | |
module.Name = "TestModule"; | |
module.Codes = "Sub ShowMessage()" + "\r\n" + | |
" MsgBox \"Welcome to Aspose!\"" + "\r\n" + | |
"End Sub"; | |
// Save the workbook | |
workbook.Save(dataDir + "output_out.xlsm", SaveFormat.Xlsm); |
C#でVBAまたはマクロを変更する
Aspose.Cellsを使用してVBAまたはマクロコードを変更できます。Aspose.Cellsは、Excelファイル内のVBAプロジェクトを読み取り、変更するための次の名前空間とクラスを追加しました。
- Aspose.Cells.Vba
- VbaProject
- VbaModuleCollection
- VbaModule
この記事では、Aspose.Cellsを使用してソースExcelファイル内のVBAまたはマクロコードを変更する方法を説明します。
次のサンプルコードは、次のようなVBAまたはマクロコードが含まれているソースExcelファイルをロードします。
Sub Button1_Click()
MsgBox "This is test message."
End Sub
Aspose.Cellsのサンプルコードの実行後、VBAまたはマクロコードは次のように変更されます。
Sub Button1_Click()
MsgBox "This is Aspose.Cells message."
End Sub
提供されたリンクから ソースExcelファイル と 出力Excelファイル をダウンロードできます。
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create workbook object from source Excel file | |
Workbook workbook = new Workbook(dataDir + "sample.xlsm"); | |
// Change the VBA Module Code | |
foreach (VbaModule module in workbook.VbaProject.Modules) | |
{ | |
string code = module.Codes; | |
// Replace the original message with the modified message | |
if (code.Contains("This is test message.")) | |
{ | |
code = code.Replace("This is test message.", "This is Aspose.Cells message."); | |
module.Codes = code; | |
} | |
} | |
// Save the output Excel file | |
workbook.Save(dataDir + "output_out.xlsm"); |
高度なトピック
- ワークブック内のVBAプロジェクトにライブラリ参照を追加する
- フォームコントロールにマクロを割り当てる
- VBAコードのデジタル署名が有効かどうかをチェックする
- VBAコードが署名されているかを確認する
- WorkbookのVBAプロジェクトが署名されているかを確認する
- VBAプロジェクトが保護されており、閲覧用にロックされているかを確認する
- テンプレートからターゲットワークブックへのVBAマクロUserForm DesignerStorageのコピー
- 証明書でVBAコードプロジェクトにデジタル署名する
- VBA証明書をファイルまたはストリームにエクスポートする
- ワークブックの読み込み時にVBAプロジェクトをフィルタリングする
- VBAプロジェクトが保護されているかを調べる
- ExcelワークブックのVBAプロジェクトをパスワードで保護する