3

完了するまでに約20分かかるマクロがあります。ユーザーがアクセスできるac#winformがあります。これには[マクロの実行]ボタンが含まれています。ユーザーがボタンを押して実際にフォームを閉じ、20分以内に事前定義されたディレクトリのマクロからの出力を確認できるようにしたいと思います。

単にデリゲートを作成してデリゲートにマクロを実行させる場合ですか、それとも上記は些細なことではありませんか?

実行可能かもしれないアイデアのカップル:

  • ユーザーがボタンを押した後、フォームを非表示にするだけですか?欠点は、マクロが引き続きExcelのインスタンス内でユーザーのCPUを拘束することです。
  • UserXのPC上のwinFormは、どういうわけか、「Excel」サーバーで実行するプログラムを開始できますか?これはとてつもないことのように聞こえますが、誰かが助けてくれるかもしれません。
  • 上記と同様に、Excelサーバーで、2秒ごとに実行するようにスケジュールされた小さなデーモンコンソールアプリを作成し、共有データベースのテーブルをチェックして、マクロを実行する必要があるかどうかを確認できます。ユーザーのwinformがこの制御テーブルを更新すると、デーモンが機能します。
4

1 に答える 1

3

はい、それは簡単です。

C#を使用してVBSファイルを起動します。コードは次のようになります

System.Diagnostics.Process.Start(@"cscript //B //Nologo c:\MyScript.vbs");

上記のコードは、プロンプトやエラー、シェルロゴなしでVBScriptを起動します。

次のステップは、vbsファイルを作成することです。

メモ帳を開いてこのコードを貼り付け、MyScript.vbsファイルとして保存します

Dim xlApp, xlBook

Set xlApp = CreateObject("Excel.Application")
'~~> Change Path here
Set xlBook = xlApp.Workbooks.Open("C:\Test.xls", 0, True)
xlApp.Run "TestMacro"
xlBook.Close
xlApp.Quit

Set xlBook = Nothing
Set xlApp = Nothing
于 2012-06-10T02:07:08.157 に答える