範囲:
私と私のチームは、VBA を使用して、顧客向けの Excel レポートを作成しています。この .xlms ファイルには、お客様に提供したくない関数とマクロがあります。
次のコード サンプルを使用して、ブックからすべてのマクロを削除することができました。
private void DeleteMacros (string reportPath)
{
// WorkBookManager is our own Wrapper for the Excel Workbook class
WorkbookManager wb = new WorkbookManager (reportPath);
wb.OpenWorkbook (false);
//Lock workbook
wb.RunMacro("ThisWorkbook.LockWorkbook");
//Deleting the Macros from the workbook
VBProject project = wb.GetInstance().VBProject;
for (int i = project.VBComponents.Count; i >= 1; i--)
{
VBComponent component = project.VBComponents.Item(i);
try
{
project.VBComponents.Remove(component);
}
catch (ArgumentException)
{
continue;
}
}
for (int i = project.VBComponents.Count; i >= 1; i--)
{
VBComponent component = project.VBComponents.Item(i);
component.CodeModule.DeleteLines(1, component.CodeModule.CountOfLines);
}
wb.CloseAndSave();
wb.CleanUp();
}
問題:
このワークブックには、あるシートから別のシートに移動するために使用するマクロなど、まだ必要なマクロがいくつかあります。これらはボタンにバインドされています (レポートの下部にシート タブが表示されないようにするため)。
質問:
重要ではない (/機密性の高い) マクロを 1 つのワークブックの 1 つのファイルにカプセル化し、他のすべてのワークブックとそのマクロを何らかの方法で削除する方法はありますか?
そうでない場合、どちらが正しい方法ですか?