• ベストアンサー

vbスクリプトからexcelのVBAを起動したい。

vbスクリプトからexcelのVBAを起動したいので、初心者ながら下記のようにコーディングしましたが、excelのVBA;main()が実行できません。  <excelのVBA;main()は単独では正常に起動します。> vbスクリプトからexcelのVBAの起動の方法を教えて下さい。 そのスクリプトをタスク(元旦)に起動したいです。 <vbスクリプト コーディング> dim exlApp On Error Resume Next set exlApp = createobject("Excel.Application") exlApp.visible = true exlApp.Workbooks.Open "C:\年賀状.xls" exlApp.run "Main" If Err Then WScript.Quit End IF If Not(exlApp Is Nothing) Then exlApp.Quit set exlApp = nothing End If

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

冒頭の『On Error Resume Next』をコメントアウトして どこでどのようなエラーが出ているのか確認しましょう On Errorなどのトラップはデバッグが仕上がってから有効にするか ある命令だけスキップしたい場所へOn ErrorResume Next と On Error Goto 0 をセットで使ってデバッグしましょう または On Error Goto ラベル として エラートラップルーチンを仕込んでおいて Err.Numberなどで スキップしてもいいエラーなのかを適切に判断し スキップする場合は Resume Next でとっらぷされた次の命令に返します 予定外のエラーなら MsgBoxやWScript.Echoなどでエラー表示をさせましょう

UKUJIMA
質問者

お礼

デバッグする。 基本ですね。 ありがとうございました。 『On Error Resume Next』をコメントアウトしてみると、 "年賀状.xlsがありません。"と出ました。"年賀状.xls"が何か不正な文字だったのか?一度、名称を換えもう一度"年賀状.xls"に書き直すと 出来ました。

その他の回答 (3)

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.4

どれでも関係ないと思います。 以下のように変更してみてください。 例えば、EXCEL の起動するブック名「年賀状.xls」、実行するモジュール名「Sub Main()」 の場合、 dim exlApp dim exlBook set exlApp = WScript.CreateObject("Excel.Application") set exlBook = exlApp.Workbooks.Open ("C:\年賀状.xls",,True) exlApp.run "年賀状.xls!Main"

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.2

以下のようにブック名を付けてください。 exlApp.Run "年賀状.xls!Main"

UKUJIMA
質問者

お礼

ありがとうございます。 やはり開きません。 エクセルの年賀状.xlsのMainは、FUNCTION,PUBLIC SUB,SUB どれでもいいのでしょうか。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

モジュール名つきで指示しましょう 標準モジュールなら exlApp.Run "Module1.Main" ワークシートのPublic Subプロシージャなら exlApp.Run "Sheet1.Main" といった具合で ・・・

UKUJIMA
質問者

お礼

ありがとうございます。 一瞬、エクセルが開いて閉じて終了します。ブックは開いてないようです。