4

スプレッドシートまたはアクセス データベースに記述した VBA マクロを 1 日 1 回自動的に実行するようにコンピュータをセットアップしたいと考えています。

では、バッチ ファイルなどから VBA マクロを呼び出す方法はありますか?

4

2 に答える 2

6

もちろん。コマンド ライン スイッチを使用します。提供されるリンクは、コマンド ライン スイッチに関するページです。Accessの場合、Excelの場合

msaccess ファイルをロードし、保存されたマクロを実行する .bat ファイルの例を次に示します。

start msaccess "%localFolder%%localFileName%" /x %macroName% この状況%localFolder%%localFileName%では、含まれている mdb/accdb ファイルのフル パスに加算され%macroName%、マクロの名前になります。

Excel の場合は、実行したいものをWorkbook.Openイベントに配置するだけです。次に、次のようなコマンドを使用してロードします。 start excel %workbookPath%

これにより、Excel の新しいインスタンスが作成され、ブックが開かれ、Workbook.Openイベントがトリガーされます。ワークブックを開いている可能性があると思われる場合は、読み取り専用パラメーターを渡して、/rユーザー入力なしでブックを再度開くこともできます。

.bat ファイルをセットアップしたら、Windows スケジューラでそれらをスケジュールするだけです。

個人的には、スクリプトが Access または Excel 固有のものでない限り、.VBS でスクリプトを書き直して、Excel または Access のオーバーヘッドなしで実行できるようにし、それをスケジュールすることをお勧めします。:)

于 2012-12-31T15:14:04.230 に答える
0

スプレッドシートまたは Access データベースのデータを変更する場合は、VBS と DAO オブジェクトを使用できます。

Set Dbe = CreateObject("DAO.DBEngine.36") 

データの更新に DAO を使用する利点は、Excel や Access アプリケーションよりもはるかに小さく、高速で軽量なオブジェクトであることです。より堅牢に、より安定に。クラッシュ時にメッセージ ボックスを表示しません: GUI ログイン ユーザーは必要ありません。

DAO (または ADO) だけを使用することの欠点は、オブジェクトがはるかに小さく、高速で、軽量であることです。印刷や VBA のようなことはできません (ただし、セルを読み取り、VBS 計算を実行してから挿入することはできます)。データ)。

特に、DAO/ADO オブジェクトは、Excel にセル値を再計算させることはできません。そのためにはエクセルが必要です。また、Access では UDF を使用できません。そのためにはアクセスが必要です。

(VBS を使用して Access/Excel を自動化できますが、それは Access/Excel の上に別のレイヤーを追加するだけなので、多くの場合、お勧めできません。)

于 2013-01-03T11:50:09.223 に答える