web-dev-qa-db-ja.com

スケジュールされたタスクとしてExcelを起動するバッチを実行できません

以前に手動で実行された次のSkriptがあります。

_set DIR="X:\SYSTEM\MAKROS"
X:
cd %DIR%
start /wait Excel.EXE /e-GENERATE_REPORTS BSYSTEM.XLA
_

手動で開始した場合、これは問題なく機能します。 _BSYSTEM.XLA_はExcelベースのプロジェクト管理システムの一部であるため、ファイルを別のファイル形式にエクスポートすることはできません。

このスクリプトを毎日実行する必要があります。この_.bat_-ファイルを実行するようにスケジュールされたタスクを作成する場合、それは単純に機能しません。タスクは、最後に実行された結果コード_0x1_で数秒(スクリプトが完了するまでに通常約10分かかります)で終了し、タスクの履歴には何も役立ちません: enter image description here

"C:\Program Files (x86)\Microsoft Office\Office16\Excel.EXE" /e-GENERATE_REPORTS BSYSTEM.XLAを直接実行するタスクを作成しようとしましたが、これはエラーになり、履歴に表示されます。

タスクスケジューラは、タスク「\ Allgemein\TMGBericht」のインスタンス「{1fbeadd0-605b-4fe0-8d96-621281c53519}」でアクション「C:\ ProgramFiles(x86)\ Microsoft Office\Office16\Excel.EXE」を起動できませんでした。追加データ:エラー値:2147942667。

私も次のようなvbsスクリプトを試しました:

_set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
set xlBook = xlApp.Workbooks.Open("X:\SYSTEM\MAKROS\BSYSTEM.XLA")
xlApp.Run "GENERATE_REPORTS"
xlBook.Close
xlApp.Quit
_

しかし、この方法ではエラー_The macro can not be executed. The 'GENERATE_REPORTS' macro may not be available in this workgroup, or all macros have been disabled_が発生します。これは、手動で呼び出されたoboveスクリプトで正常に機能するため、正しくありません。ファイルの階層化元のネットワークドライブは、「信頼できる場所」として設定されます。

不思議なことに、_BSYSTEM.XLA_を開いたときにシートが表示されません。マクロボタンを除いて、ほとんどすべての要素がグレー表示されたExcelファイルだけで、マクロを確認しようとすると、何も表示されません。だから私は_start /wait Excel.EXE /e-GENERATE_REPORTS BSYSTEM.XLA_が何をするのか理解するのに苦労しています。

次の2つのドキュメントを除いて、Excelコマンドラインスイッチについて役立つものは何も見つかりませんでした。

このコマンドをスケジュールされたタスクとして実行できるように、上記のbtachスクリプトのスクリプト可能な代替手段を提供するにはどうすればよいですか、またはvbsを修正するにはどうすればよいですか?

2
farosch

このコマンドを使用すると、ExcelはUIを表示する必要があるため、タスクはバックグラウンドで実行できません。これは、タスクのプロパティでRun whether user is logged on or notが選択されている場合に自動的に行われます。このオプションを設定した後、すべてが期待どおりに機能しました。

enter image description here

サーバーの再起動後にタスクを実行できるようにするには、 このツール を使用して自動ログインを有効にしました。

1
farosch

XlBookがRunメソッドをサポートする正しいオブジェクトではないため、VBAスクリプトが失敗しています。

試してみてください

_xlApp.Run "GENERATE_REPORTS"
_

上記の代替案

  • マクロがモジュール内にある場合_xlApp.Run "BSYSTEM.xls!GENERATE_REPORTS"_ 'workbookName'!macroの形式に注意してください

  • マクロがシートにある場合_'xlApp.Run "'BSYSTEM.xls'!sheet1.GENERATE_REPORT"_

ファイル拡張子

。xlaはExcelアドインファイル形式です。マクロ対応の。xlamとして保存してみてください。 xlaのフォーマット。

コードの内訳

set xlApp = CreateObject("Excel.Application")' Excelアプリケーションを作成します プロセス。

_xlApp.Visible = True_' アプリケーションの表示/編集 を有効にします。

set xlBook = xlApp.Workbooks.Open("X:\SYSTEM\MAKROS\BSYSTEM.XLA")' 指定されたブックを開きます 開いたばかりのExcelアプリケーション内。

_xlApp.Run "GENERATE_REPORTS"_' マクロコマンドを実行します GENERATE_REPORTS。

_xlBook.Close_ 'ブックを閉じます。

_xlApp.Quit_ 'Excelアプリケーションプロセスを終了します。

2
angelofdev