• 締切済み

VBSとエクセルVBAの連携

一定の処理を自動化したいと考えております 以下が現在の構成 main.vbs       メインの処理を実行 Master.xls (Macro1) マクロを記述してあるエクセル A.xls マクロを実行したいエクセル 現状はmain.vbsの処理を終了後に手動でアクティブウィンドウをA.xlsにしてMacro1を実行しています。 (エクセルファイルは両方開きっぱなしです) これをmain.vbsの処理の中に組み込み main.vbsの処理終了後に自動的に実行するようにしたいと考えています。 1.既に開いてあるエクセルファイルをアクティブにする処理が分かりません。 2.アクティブなエクセルファイルから別のエクセルファイルのマクロを実行する方法がわかりません。 初心者の質問で理解に苦しむかと思われますがご教授よろしくお願いいたします。

  • oakan
  • お礼率100% (2/2)

みんなの回答

  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.1

このままでは目的のことはできないと思いますが、個々の回答は例えば下記です。マクロを記述してあるエクセルを開いておく必要はないでしょう。 アクティブにしたA.xlsに対してMacro1が確実に実行されるための工夫が必要です。 ----- '既に開いているエクセルをアクティブにする Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.AppActivate "A.xls" WScript.Sleep 3000 'エクセルのマクロを実行する(エクセルは閉じておく) Set objExcel = CreateObject("Excel.Application") 'objExcel.Visible = True objExcel.Workbooks.Open "C:\Master.xls" objExcel.Application.Run "Master.xls!Macro1" objExcel.Quit -----

oakan
質問者

お礼

早速の回答ありがとうございます。 WshShellを使って考えていこうかと思います

関連するQ&A

  • vbsで、フォルダ内にあるcsvファイル全てを開き、マクロを起動させた

    vbsで、フォルダ内にあるcsvファイル全てを開き、マクロを起動させたい。 こんにちは。 お世話になっております。 さて、最初はバッチでどうにかならないかと思っていましたが、下記vbsソースを見つけ、 早速チャレンジしたのですが、ファイルが開くところまではうまく行きますが、「マクロ Macro1がありません」というメッセージが出てしまい、マクロが実行されません。 手動でマクロを実行しようとするときに出てくるマクロ一覧には、PERSONAL.XLS:Macro1と、表示されております。 マクロの保存先をまちがえているのでしょうか? また、あるフォルダのcsvファイル全てに対して1つのvbsキックで処理が行なわれるようにするには、どの様にすればいいでしょうか? よろしくお願いします。 ----------------------------------------------------------------------- Dim obj Set obj = WScript.CreateObject("Excel.Application") obj.Visible = True obj.Workbooks.Open "C:\Documents and Settings\Administrator\My Documents\001.xls" obj.Application.Run "Macro1"

  • EXCEL VBA SaveAsメソッドについて

    お世話になります。 現在、ネットワーク内の2サーバー間でvbsを使用してExcelピボットを更新して別名で保存する処理 を作成しています。この時、Server1からExcelマクロ実行用のvbsをキックしてServer2のExcel マクロ内のSaveAsメソッドを実行してExcelを別名で保存すると、 作成されるべきファイルと拡張子無しの16進数のようなファイル名のファイルが2つ出来上がってしまいます。 Excelのバージョンは2003でServer2のExcelマクロを手動で実行した場合はこのようなことは発生しませんでした。 どなたか原因がわかる方がいればご教示いただきたく存じます。 何卒よろしくお願いいたします。

  • XCELのVBAマクロで次のことが実行できますか。

    XCELのVBAマクロで次のことが実行できますか。 (前提)WINDOWSで (1)MYDOCのフォルダAにExcelファイルA1.xlsからA9.xlsまで9個のファイルと、もう一つマクロBBの入ったExcelファイルB.xlsがあります。 (2)各Ai.xlsには、Aisheet(i=1カラ9)と名前のsheetが1つのみあります。 (処理したいこと) A1.xlsを開き、A1sheetを、B.xlsへcopyし、そのシートに対してマクロBBという処理を実行します。 続いて同様にA2.xlsを開き、A1sheetを、B.xlsへcopyし、そのシートに対してマクロBBという処理を実行します。 以下A9まで実行したい。 (質問)Bのマクロに新たにCCというマクロを作り、CCを実行することで、自動的に(処理したいこと)を実行してしまうようなものを作れますか。 また作るとしたらおおよそどんな風に作ればいいでしょうか。 ご回答よろしくお願いします。

  • どのファイルを開いた時もマクロを自動実行。エクセル

    新規にエクセルを開いたときだけマクロを自動実行するには、 personal.xlsで Sub auto_open() ' Macro1 Macro Range("A1").Value = "111" End Sub とすれば良いかと思いますが、 新規に開くどのファイルに対しても ファイル名ABC を含んでいる時だけ マクロを自動的に実行するにはどうしたらよいでしょうか? (ファイルを開いてから マクロボタンを押して マクロに”ファイル名を チェックしてA1にデータを書き込む”があるのはだめです。) (アドインでツールバーボタンを押すのもだめです。) エクセルは2003 OSはXPです。 説明不足でしたらすみません。

  • VBSでエクセルマクロの実行中

    VBSでエクセルを起動しマクロを実行ここまでは上手くいったのですが マクロはファイルを開いたエクセルにペーストするものですが ファイルを移すときにこのファイルで良いですかと聞いてきます いつもENTで実行しているのですが ENT key を押すか 開く(o)をクリックこれをVBSに組み入れたいのですが 出来るでしょうか?

  • VBA フォルダ内の複数Excelファイルを開く

    お世話になります。 XP エクセル2003使用です。 フォルダー内にある複数のすべてのエクセルを開くコードを 下記の解答をそのままコピーして実行しました。 (以下、このエクセルファイルを「実行ファイル.xls」と呼びます) http://okwave.jp/qa/q2598781.html (コードは最後尾に転記(※)) 問題点は、実行ファイル.xlsから実行した 開きたいエクセルファイルは、 Workbook_Open()で自動実行して、 最後に、ThisWorkbook.Closeで閉じるので、 マクロの実行がループの途中(1回目)で 実行ファイル.xls のコードの実行も終了してしますことです。 (実行ファイル.xls のファイルは開いたままです) つまり、ThisWorkbook.Closeでエクセルを閉じたときに マクロの実行までもが終わってしまうので、 実行ファイル.xlsに戻ってきません。 この問題を解決するための方法として 下記2点を調べましたが、力不足で自己解決できません。 --------------------- 1  実行ファイル.xls から開きたいエクセルファイルを開く時に 何かしらの命令文または引数を記述しておく。  → 解決のヒントを見つけることができませんでした。 --------------------- 2 実行ファイルをエクセルではなく、VBS(VBScript)で記述する。 この場合、参考にしたコードを、 VBS用に書き換えれば良いと思いますが、 VBSは記述したことがないので、さっぱりです。 方法として間違っていなければ、 できれば、どなた様か当該コードを VBS用で記述いただけませんでしょうか? --------------------- 一番良い方法が分からないので、 お力添えいただきたいのです。 よろしくお願いします。 --------------------- (※)参考コード --------------------- Sub OpenAllBooks()   Dim FileName As String   Dim OpenedBook As Workbook   Dim IsBookOpen As Boolean      FileName = Dir("*.xls")   Do While FileName <> ""     If FileName <> ThisWorkbook.Name Then       IsBookOpen = False       For Each OpenedBook In Workbooks         If OpenedBook.Name = FileName Then           IsBookOpen = True           Exit For         End If       Next       If IsBookOpen = False Then         Workbooks.Open (FileName)  ←この処理の後に戻ってこれません       End If     End If     FileName = Dir()   Loop End Sub

  • Excel VBA

    マクロ処理で、VBSファイルを実行することは可能でしょうか?

  • 夜間だとvbsからエクセルマクロが起動しない。

    夜間だとvbsからエクセルマクロが起動しない。 wiodowsのタスクスケジューラでbatを起動し、batからvbsを起動し、vbsからエクセルマクロを起動する夜間バッチを作ったのですが、エクセルマクロが起動するタイミングでvbsが処理終了?します。 タスクスケジューラから手動起動したり、昼間に時間を指定した場合は問題なく動くのですが、夜間(早朝5:30)だと動きません。 たまたまエクセルマクロが異様に時間がかかっている可能性も考えましたが、朝9時時点でタスクマネージャのプロセスにEXCEL.EXEはいませんでした。 夜間バッチで特に気をつけるべきことはあるでしょうか?

  • EXCELで、マクロ、VBAをクリックせずに実行する方法

    EXCELで、マクロ、VBAは普通、手動で「実行処理」をして動くものだと思いますが、EXCELファイルを開いた瞬間に自動で実行させる方法は有るのでしょうか? 方法が有れば是非教えて下さい。宜しくお願い致します。

  • htmlまたはJavascriptからファイルを引数つきで起動する。

    htmlまたはJavascriptからファイルを引数つきで起動する。 マクロ(macro.xls)に引数(csvファイル名)を渡して起動させたいため、 vbsを作成してマクロを引数つきで実行するようにしました。 コマンドからは >test.vbs /FILE:macro.xls /P:aaa.csv でマクロを実行することができたのですが、 HTMLにリンクを張り、リンクをクリックすることで vbsを引数つきで実行するにはどうすればよいでしょうか? (Javascriptを経由しても構いません)

    • ベストアンサー
    • HTML

専門家に質問してみよう