C#でVisioプロジェクトの自動化を高速化する方法についてのヒントがありますか?私が持っているオートメーションはトイレの屋台を建てることです。私は10の屋台を作ることを選ぶことになり、VBAはすべての形を作るのに約3秒かかります。VisioでのVBAとC#のスピードテスト
Microsoft.Office.Interop.Visioライブラリを使用して、VBAをC#フォームアプリケーションに変換するだけで済みます。同じテストを行うには、14秒かかります。
私はvisioアプリケーションを不可視にして、それを完了後に見えるようにすることで3秒ほどかかることがありましたが、それでもVBAに近いものではありません。
私はC#に気付きました。私はVBAの中ではそれぞれの図形を使ってVisio図面の構築自体を見ることができます。だから私はまた、 "Application.ScreenUpdating"を使って試しました。私はそれを0にしようとしたが、それは何もしなかったので、C#でそれは短いデータ型を取ります。また、私は "真"を使用してVBAでそれを有効にしようとしましたが、それをオンにしませんでした。
これ以上の情報をもっと速くするためのヒントはもうありませんか?私はVBAがC#より高速であることに驚いています(Officeスイートに組み込まれている可能性があります)。
* Visioプロセス内で*実行されるコードは決して勝てません。 WinFormsプロジェクトは、プロセスの境界を越えて2つのスレッドコンテキストスイッチを必要とするという基本的なコストによっていつも打ち勝ちます。非常に単純なプロパティゲッターは、このオーバーヘッドのために約10,000倍遅く実行されます。 interopメンバーが疲れている場合は、それほど痛いことはありません。比較可能なコードを作成するには、アドインを作成する必要があります。 –
これはVBAに関する質問ではありません。 VBAタグを削除してください。 – jsotola
マスターをプログラムでドロップすると、dropmanyコマンドを使用することができ、それによって多くの時間を節約できます。現在、ジオメトリを描画している場合は、マスターを使用するために創造的にする必要があります。 –