- 締切済み
Excelマクロをwscriptなどで起動したいのですが
はじめまして。当方、Excelマクロもwscriptも初心者で現在、マクロでできたプログラムを修正するというタスクを与えられているのですが、以下のようなことで困っています。 現在、サーバー上にある\\TEST\200904\a.csvというファイルと1年前のファイル\\TEST\200804\a.csvというファイルをApplication.GetOpenFilename()で指定してもらい、読み込んでマクロが動いているのですが、これをwscriptなどのinputboxに「200904」と入力するだけでこれらのファイルを読み込んで自動的にマクロを動かすということは可能でしょうか?また、wscript、マクロをどのように作成すれば可能でしょうか?ご教授お願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- peachstrea
- ベストアンサー率100% (1/1)
YourMacro.xlsのModule1に次のようなマクロがあるとします。 Sub test(intValue) Cells(1, 1).Value = intValue End Sub VBSで次のようにYourMacro.xlsのマクロを呼び出しマクロに引数を渡します(VBSはYourMacro.xlsと同じフォルダに置きます) myValue = Inputbox("InputValue", "MyTitle") Set objExcel = CreateObject("Excel.Application") With objExcel .Visible=True '←表示不要であれば不要 .Workbooks.Open CreateObject("WScript.Shell").CurrentDirectory & "\YourMacro.xls",True .Run("Test(" & myValue & ")") End With 要約するとこんな感じかな)^o^( (1)VBSでExcelのオートメーションオブジェクトを作成して既存のExcelを捕捉 (2)捕捉したExcel内のマクロはRunメソッドで呼び出す なおExcelマクロの戻り値をVBS側に戻したい時はどこかテンポラリーなセルを使ってそこから値を取得します(ExcelでFunctionブロックを作ってもその戻り値をVBSには戻せない・・・っぽいです)
- n-jun
- ベストアンサー率33% (959/2873)
a.csvのフォルダを指定し開かせると言う事でしょうか? >wscriptなどのinputboxに の必要性はわからなかったですが、Excelで開くまでを行なうとした場合、 Sub Test() Dim Fname As Variant Dim NetFol As String Fname = Application.InputBox("フォルダ名は?", "フォルダ名入力", Type:=2) If Fname = False Then Exit Sub NetFol = "\\TEST\" 'ネットワークのフォルダ With CreateObject("Scripting.FileSystemObject") If Not .FolderExists(NetFol & Fname) Then MsgBox "フォルダが存在しません" & vbLf & "処理を中断します" Exit Sub End If End With Workbooks.Open Filename:=NetFol & Fname & "\a.csv" End Sub かな? >これらのファイルを読み込んで自動的にマクロを動かすということは可能でしょうか? 読み込んだあとの処理が可能かどうかは、現在何をしているのか(Application.GetOpenFilenameの後で) で変わってくると思いますよ(たぶん・・・自信なし)