私は、最初のパラメータとして関数自体を呼び出すExcelマクロを呼び出そうとしています。 C#Excel interopを使用してこれを行うにはどうすればよいですか?Interopを介してExcelマクロを実行する:関数呼び出しを引数として渡すにはどうすればよいですか?
のは、私は簡単にこのようにエクセルの内部で呼び出すことができ
Sub ValidateSheet(version As Integer, displayNoErrorsBox As Boolean)
エクセル
でこのサブルーチンを持っているとしましょう:Call Validation.ValidateSheet(Data.GetVersion, False)
Data.GetVersionはもちろん、整数を返します。
私はinterop経由でどのように呼びますか?渡されるすべてのパラメータはオブジェクトです。関数呼び出しを文字列として渡すことができるかどうかはわかりません。これは確かに動作しません:
m_Application.Run("Validation.ValidateSheet", "Data.GetVersion", "False");
これは可能ですか?このトピックで見つけることができるすべてのチュートリアルと投稿は、文字列をマクロに渡すだけです。
:私はこれをやっている
を'Validation.ValidateSheet(Data.GetVersion、False)'が実行するものです。パラメータは、呼び出されたプロシージャに渡される前に評価されます。あなたのC#コードで 'Data'オブジェクトを取得し、' .GetVersion'を呼び出して、それを最初のパラメータとして渡す必要があります。 – Comintern
右。私はすべてのことInteropへの初心者であることを期待し、論理的で簡単です。 Dataオブジェクトについて少し具体的にすることはできますか?名前空間を調べると、飛び出さない:https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel(v=office.15).aspx – Drakestar
手がかりがない。 'Data'という名前のExcelクラスやインタフェースはなく、GetVersionメンバには(少なくともExcel 2013では)何もありません。 VBAコードを調べる必要があります。 FWIWでは、 'Application.Run'に' Validation'を渡すことはできません - それはオブジェクトです。 – Comintern