C#から既に端末に導入されているCOMアドイン(vsto)を呼び出す方法ってありますか?
自作したCOMアドイン(vsto)が既に端末に導入されています。
C#の処理によって呼び出して実行したいのですが、
何か方法はありますでしょうか?
COMアドイン自体はExcel上で、ある形式のシートを作成するなどの処理です。
vstoの実行でC#のアプリから直接渡したい引数などはありません。
>:修正依頼を受けて
情報不足で申し訳ありません。
使用したい状況としては、COMアドインが導入されている端末で
そのCOMアドインをC#の外部ツールから呼び出したいというものです。
端末も自端末だけでなく他の端末(COMアドインは導入されている)でも行いたいです。
処理内容としてはフォーマットとなるExcelBookを用意し、
そのBookをC#での処理で編集後COMアドインを呼び出し、
さらに処理をかけるものになります。
COMアドインが導入されていない端末では処理したくないので、
C#上で開いたExcelのインスタンスで
COMアドインを呼び出せないかな?と思ったのですが、
参照してモジュール内で処理をするしかないでしょうか?
自作ということですが、どうやって作られたんですか?C# で作られたのであれば参照すればいいと思うのですが。
アドインは、通常UIを介して(リボンにあるボタンをクリックしたり、メニューから呼び出したりして)機能を呼び出すものと思いますが、「呼び出す」とは、そのようなことをしたときと同等のことを呼び出したいということでしょうか?そのアドインが、VBAマクロからも呼び出せるメソッドなどを公開しているなら、Excel.Applicationのインスタンスを介して、一般的なマクロ呼び出しと同じように実行できたりしませんか?(Excelで作成したアドインはApplication.AddInsからロード状態など確認できるようですが、COMの場合でも機能すれば、作られたCOMアドインが機能する状態か、Invokeする前にチェックできるでしょう)
hskさん その通りです
上記途中で追記してしまいました。ボタンクリックなどを介した機能を呼び出したいということなのですね。
hskさん はい。そうなんです。
Windowsフォームの標準ボタンコントロールですと、ボタンオブジェクトのPerformClickメソッドを呼ぶと、まさしくボタンがクリックされたときと同じ挙動をさせることができるのですけれど、リボン用のボタンコントロール(インターフェイス)にはそれが用意されていないですね。
https://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.ribbon.ribbonbutton.aspx
英語のStackOverflowに似た質問があって、SendKeysでキー入力をエミュレートしたら?と回答されていました。http://stackoverflow.com/questions/24807290/how-to-click-a-excel-ribbon-button-from-code-behind
おそらくボタン(のキャプション)にアクセスキーを設定して、Alt + ? のキーコードを送信する、みたいな。。
hskさん なるほど。。。半ば強引ですけどできなくはなさそうですね!ちょっとその路線で試してみます。ありがとうございます!
回答1件
あなたの回答
tips
プレビュー