3

これが可能かどうかはわかりませんが、実行可能であるように思われます.... 結局のところ、2013 年です! そして、私が見つけたいくつかのフォーラムの投稿は、それがそうであることを示唆していますが、私はそれを機能させることに成功していません...

3 つの異なる Web サイトからファイルをダウンロードし、データをインポートして処理するマクロを備えた Access 2010 db があります。1時間17分の運行です。

このマクロを午前 4 時に実行するようにスケジュールしたいので、コーヒー タイムと午前 8 時に作業を開始することですべてが完了し、作業が開始されます... そこで、これを実行する VBScript を作成しました。

これは、私の PC でのみ使用するシングル ユーザー DB です。

いくつかの調査を行いましたが、これを機能させることができないようです。これが私がこれまでに持っているものです:

「Pricing Model.accdb」内の Access 2010 の「メイン」モジュール内のマクロ:

Public Sub Download_And_Import()
    ProcStep = ""
    ExecStep = 1
    DoCmd.SetWarnings False
    'Empty the Execution Progress table
    DoCmd.RunSQL "DELETE * FROM EXECUTION_PROGRESS"
    Call Update_EXECUTION_PROGRESS(Format(Now(), "YYYY/MM/DD HH:MM:SS"), ExecStep, "Starting Download_Files Main Procedure...")
    Call Download_Files.Download_Files
    Call Update_EXECUTION_PROGRESS(Format(Now(), "YYYY/MM/DD HH:MM:SS"), ExecStep, "Finished Download_Files Main Procedure...")
    Call Update_EXECUTION_PROGRESS(Format(Now(), "YYYY/MM/DD HH:MM:SS"), ExecStep, "Starting Import_Files Main Procedure...")
    Call Import_Files.Import_Files
    Call Update_EXECUTION_PROGRESS(Format(Now(), "YYYY/MM/DD HH:MM:SS"), ExecStep, "Finished Import_Files Main Procedure, closing application now...")
    DoCmd.SetWarnings True
End Sub

次に、Access VBA マクロを外部で実行するために、次の VBScript を作成しました。

dim accessApp
set accessApp = createObject("Access.Application")
accessApp.OpenCurrentDataBase("G:\Pricing DB\Pricing Model.accdb")
accessApp.Run "Download_And_Import"
accessApp.Quit
set accessApp = nothing

ステップである「Illegal function call, Line 4」というメッセージが表示されます。

accessApp.Run "Download_And_Import"

どんなアイデア/ヘルプも大歓迎です! 前もって感謝します!

M

4

3 に答える 3

3

VBScript 自体に問題はありません。コードをコピーし、db ファイル名とプロシージャ名を変更したところ、エラーなく実行されました。だから私の推測では、プロシージャを実行しようとすると、Access から VBScript エラーが "発生" します。

Access で開きPricing Model.accdb、イミディエイト ウィンドウ ( Ctrl+ g) に移動し、次の行を入力して を押します。Enter

Application.Run "Download_And_Import"

それでエラーが発生する場合は、その手順に問題があることは間違いありません。エラーがスローされない場合でも、手順に Windows のアクセス許可が必要であり、ユーザー アカウントで実行するようにタスクを設定していない場合は、スケジュールされたタスクから実行する際に問題が発生する可能性があります。

手順のトラブルシューティングが必要な場合は、まずOption Explicitモジュールの Declarations セクションに追加します。次に、VB エディタのメイン メニューから [デバッグ] → [コンパイル] を実行します。コンパイラが不平を言うものをすべて修正します。コードがエラーなしでコンパイルされるまで繰り返します。

DoCmd.SetWarnings False情報を抑制するため、トラブルシューティング中に無効にします。を DAODatabase.Executeメソッドに置き換えることで、まったくオフに DoCmd.RunSQLならないようにすることができるかどうかを検討してください。SetWarnings

于 2013-07-14T21:19:20.050 に答える
0

ProjectName を含めることができます。

accessApp.Run "[Pricing Model].Download_And_Import"

project-name のデフォルトはデータベース名であり、スペースのために角括弧が必要です。

Sub は Public であるため、これは必要ありませんが、試してみる価値があります。

于 2013-07-14T14:09:17.370 に答える