Access 2013 VBAで、バッチプログラムを作った。
Winodws Server上に置いて、タスクスケジューラで定期的に実行したい。
普通にaccdbファイルを実行すると、正常に終了する。
しかし、タスクスケジューラから実行すると、途中で止まってしまう…
Access VBAでテストプログラムを作って調べた結果、Access VBAが止まってしまうのは、OLEオートメーションでExcelを起動させる処理のところであった。
色々ググったところ、下記サイトに行き当たった。
http://heppokosehuntouki.blog.fc2.com/blog-entry-4.html
「タスクスケジューラは、仮想デスクトップがないとExcel等のオブジェクトを開けない」ということらしい。
結論。AccessからVBAでExcelを開く、という処理をタスクスケジューラから実行するには、Windows上に下記のフォルダを作成する必要がある。
Windowsが32bit版と64bit版で作成するフォルダが違うので注意。
x86 – C:\Windows\System32\config\systemprofile\Desktop
x64 – C:\Windows\SysWOW64\config\systemprofile\Desktop
今回の現象が発生したOSは、Windows Server 2012R2(64bit)です。
ただ、他のWindowsでも同じ現象が発生すると思われます。
VBAでOLEオートメーションで、Excel開いたりする処理をタスクスケジューラに搭載する際は注意です!
good!!!