カスタマイズされたワークブック (複数のシート、ピボット テーブル、グラフ、フィルター、アウトライン、カスタム書式設定) を作成するために、Excel マクロ (VBA) を深夜 (ファイルの準備ができた後) に実行するようにスケジュールできるようにしたいと考えています。など)。現在、マクロは翌日手動で起動されます。さらに、サーバー上で無人で実行する必要があります (ラップトップは夜に帰宅します!)。このようなことを成功させた人はいますか?Unix 側のハッキング (Perl モジュールなど) はご遠慮ください。データベース機能を含む VBA 機能へのフル アクセスが必要です。ありがとう!
2 に答える
サーバー上で Excel を常に実行しておくことができる場合は、Application.OnTime を使用して、特定のマクロの次の実行をスケジュールできます (一度実行すると、マクロ コードで別のマクロを再スケジュールします)。私が銀行で働いていたとき、私たちは常にこれを使用して夜間の仕事を実行していました.
Excel を実行したままにしておくことができない場合は、苦痛の世界にいる可能性があると言わざるを得ません。AT ジョブ (スケジュールされたタスク) を使用して Excel を起動することは可能ですが、適切なユーザー権限で実行するには頭痛の種になる可能性があり、アドインを使用すると、ロードに失敗して Excel の起動が停止するという定期的な災害が発生します。 . 結局のところ、Excel は実際にはサーバー上で実行することを意図したものではなく (実際には利用規約に違反しています)、起動/実行/停止は、取得したとしても信頼できるシステムにはなりません。仕事に。
さて、いくつかのオプションがあります。
まず、Excel をサーバーにインストールする必要があります。次に、スケジュールされたタスクを作成してプログラムを呼び出します。
この場合、vbscript または .NET プログラムなどを記述して、アプリを呼び出し、ドキュメントをロードし、そのコンテンツ (VBA) を開始できます。それはまったくうまくいくはずです。または、VBA コードをプログラムに移動し、コードで Excel をターゲットにしますが、さらに多くの作業が必要になります。
これを .NET で行うと、おそらく最高の成功を収めることができます。たとえば、実行が成功した場合などのイベントログを追加できます。