0

範囲:

私と私のチームは、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 つのファイルにカプセル化し、他のすべてのワークブックとそのマクロを何らかの方法で削除する方法はありますか?

そうでない場合、どちらが正しい方法ですか?

4

1 に答える 1

2

Nameコンポーネントを削除する前に、各コンポーネントのプロパティ ( など) を確認してみましたか? 保持したいものを削除しないでください。

于 2013-02-06T07:05:09.623 に答える