3

Word、Excel、またはPowerPointと同様の方法で、Microsoft Accessの相互運用ライブラリを使用してC#を使用して新しいマクロを作成することは可能ですか?他のアプリケーションでは、にアクセスできます。これにより、、、、またはクラスMicrosoft.Vbe.Interop._VBComponentを介して新しいマクロを挿入できます。Accessにこれに似たものがあるようには見えません。Accessにはリストがありますが、読み取り専用のようです。プロジェクトに入ったらマクロを実行する方法は知っていますが、マクロを動的に追加できる必要があります。私を正しい方向に向けてくれる人をいただければ幸いです。DocumentWorksheetPresentationAllMacros

4

2 に答える 2

6

HK1の答えのおかげで、私は必要なことを正確に行うことができました。これを行う方法に関する情報がどこにもほとんどまたはまったくないため、コードを投稿したかったのです。彼が私をこれに導いたので、私はHK1の投稿を答えとしてマークしたままにしておきます。

相互運用機能を介してVBモジュールをMS-Accessにプログラムで追加する

try
{
    Microsoft.Office.Interop.Access.Application accessApp = new Microsoft.Office.Interop.Access.Application();
    accessApp.Visible = true;

    accessApp.OpenCurrentDatabase(filePath);

    // Get the active VBProject item
    VBProject project = accessApp.VBE.VBProjects.Item(1);

    VBComponent module = project.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule);

    module.CodeModule.AddFromString(script);
}
catch (Exception ex)
{
    // Trust or the VBA Project Module has not been enabled.
}
于 2012-10-23T18:18:03.083 に答える
2

Answers.microsoft.comから取得:

Accessのマクロは、マクロが引数のない単なるVBAプロシージャである他のOfficeアプリケーションとは異なり、特別なデータベースオブジェクトです。私の知る限り、プログラムでAccessマクロを作成することはできません。 -HansV MVP(2011年4月27日)

同じ質問に投稿された別の回答があり、VB拡張性ライブラリを使用して新しいコード/VBAオブジェクトを作成できます。

于 2012-10-23T00:15:00.413 に答える