PowerPointプレゼンテーションを開き、アニメーション付きのスライドを別々のスライドに分割し、プレゼンテーション全体を一連のJPGイメージにエクスポートするC#アプリケーションを設計しています。私はVisual Studio 2010でMicrosoft Office 2010を使用しています。外部のC#アプリケーションからPowerPoint VBAアドインを自動化する
このプロジェクトは、別の開発者が喜んで提供してくれたVBAマクロとアドインであるPPspliTを中心としています。 (ありがとうございました!)本質的に、私は、このC#アプリケーション(別のマクロまたはOfficeアドインとは対照的に)を使用してこのアドインを自動化しようとしています。現在のコードはa helpful example from Microsoftに基づいています。 PowerPointファイルを変換する場合は、次のように使用された場合の例でPPspliT_main
マクロ、RunMacro
機能が正常に動作します含まれています
RunMacro(oPP, new Object[]{"'pres1.ppt'!PPspliT_main"});
ただし、マクロがPowerPointファイル自体に保存されていない場合は、 RunMacro
マクロが存在しないため(アドインがインストールされているにもかかわらず)、関数のコードがTargetInvocationException
をスローします。私はアドインの機能を利用できるようにしたいので、PowerPointファイルはその中にマクロが保存されているファイルだけでなく操作できるようにしたい。私はこれを達成するための簡単な方法があると思います。
Application.CommandBars.ExecuteMso("Copy")
と似た機能は、私が必要としているようですが、私が読んだところでは、組み込み関数にはidMsoがありますが、このようなカスタム関数はありません。これは本当ですか?それとも、C#アプリケーションから呼び出すためにPPspliTマクロコード自体を編集して "公開"する必要がありますか?
私は解決策のために周りの検索のかなりの量を行ってきた、と私が探しているものに似ている多くの記事/記事を見つけましたが、それらはすべて、彼らは私の状況では動作しませんことを十分に異なっているようです。私はマクロ/アドインを扱うことに新しいので、私の用語や理解は非常にうまくいくかもしれません。
ガイダンスをいただければ幸いです。あなたの助けを前もってありがとう!
あなたは最後のパラメータとしてpres1.ppt '!PPspliT_mainの代わりにPPspliT_mainを使ってみましたか? pres1.pptを含めるとPowerPiontはそのファイル内のマクロを特定するように指示しますが、マクロ名だけを要求すると、ロードされたアドインで定義されたPublicサブ関数を呼び出すことができます。 –
@SteveRindsbergああ、それはそれを得た!あなたがそれを指摘したので、それは完璧な意味合いをしています(そして、後見では、痛いほど明白です)。実際のコードでは、pres1.pptをハードコーディングするのではなく、変数からファイル名を引き出しました。しかし、私はそこにファイル名が必要でないことに気づいていませんでした。助けてくれてありがとう。私はそれを解決しupvoteことができるように答えであなたのコメントを再投稿してもよろしいですか? (私はStackOverflowを初めて使う人でも、自分の質問に対する他の人の回答をupvoteできますか?) – Aaron
喜んで助けました。私は答えとしてそれを再投稿しました(私はそれが働くだろうことを完全には確信していなかったので、それを行うことを躊躇していた...) –