1

私は非常に奇妙な状況にいます。Excel ファイルを開く vbs スクリプトを作成しました。WorkBook_open メソッドで vba コードを定義しました。Excel を開く vbs スクリプトを作成すると、workBook_open メソッドが呼び出され、その中で vba コードが実行されると思いました。しかし、私は間違っていました。以下は私のvbsコードです。

filePath = "E:\data_extracts\mydata.xlsm"
Set oExcel = CreateObject("Excel.Application")
oExcel.Workbooks.Open(filepath)
oExcel.Visible = True
oExcel.Run "RefreshDataFromIQY"
oExcel.ActiveWorkbook.Save
oExcel.ActiveWorkbook.Close
oExcel.Quit
Set oExcel = Nothing

デバッグ時に、oExcel.Run "RefreshDataFromIQY" で失敗し、マクロが利用できないか無効になっていると表示されます。したがって、コードはExcelアプリケーションを正常に開くだけであり、それだけです。module1、module2 にマクロ コードがあります。以下のvbsスクリプトでマクロを実行するには、どのように/どこに書くのですか。マクロ/モジュールは順番に実行する必要があり、一部のマクロは記録されたマクロです。どんな助けでも大歓迎です。ありがとう。

スコットさん、ご意見ありがとうございます。コードに変更を加えたものは次のとおりです

Dim oExcelApp
Dim oExcelWkb

set oExcelApp = createobject("Excel.Application")
set oExcelWkb = oExcelApp.Workbooks.Open("\\myserver\data_extracts\TestTOPTMay307.xlsm")
oExcelWkb.Close True
oExcelApp.Quit

ただし、コマンドラインから実行すると、実行時エラー Object required: 'Close' が表示されます。理由はありますか?クローズに失敗するのはなぜですか? 私は何を間違っていますか?ありがとう。

4

1 に答える 1

1

作成したダミーファイルに対してコードをテストしました。モジュール内にコードを配置し、パブリックのままにしておくと機能しました。ただし、プライベートモジュール->ワークシートレベルのモジュールのように配置すると、エラーが発生しました。

ただし、プライベートオブジェクトを参照すると、コードが実行されました。だからあなたへの私の答えは置き換えることです

oExcel.Run "RefreshDataFromIQY"

oExcel.Run "[yourClassName].RefreshDataFromIQY"

また、ファイルにもworkbook_eventを配置しました。イベントはオープン時に正常にトリガーされたため、問題が発生した場合は、イベント内のコードに問題がある可能性があります。

于 2012-05-22T18:46:35.393 に答える