vbsでフォルダ内のcsvファイル全てを開く方法

このQ&Aのポイント
  • vbsでフォルダ内にあるcsvファイル全てを開く方法とマクロの起動方法について質問です。
  • vbsでフォルダ内にあるcsvファイル全てを開き、マクロを実行したいですが、マクロが見つからずエラーメッセージが表示されます。
  • マクロの保存場所が間違っているのかどうかと、フォルダ内の全てのcsvファイルに対して一括で処理する方法について教えてください。
回答を見る
  • ベストアンサー

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"

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

>あるフォルダのcsvファイル全てに対して1つのvbsキックで処理が行なわれるようにするには、 VBSキックで処理とはなんでしょうか?何をするのですか? 私は、とても疑問に感じています。ご質問者さんは、ある程度VBAはご存知だと思います。それなのに、PERSONAL.XLS を呼び出すというのは、Excel(全バージョン)にとって、もっともセキュリティの甘い場所にアクセスすることですから、出来るなら、そのような方法は変えてほしいと思います。 DefaultFilePath (ふつうは、My Documentです)の一般ファイル(xls)にしたらどうですか?PERSONAL.XLSを狙うというのは、典型的なOfficeのウィルスの考え方です。そして、セキュリティをくぐり抜ける方法を教えてほしいというわけです。 最初から、Excelのマクロからしたらいかがですか?もしくは、Excelマクロを呼び出さずに、VBScript のスクリプトにExcelマクロを移植してしまえばよいです。もちろん、Excelのタイプライブラリを使う方法は出来るものと出来ないものがありますから、VBScript では、難しい部分はあります。 >マクロを有効にするかどうか聞いてくるだけで、マクロ自体は実行されません。どうしてでしょうか? ダイレクトにマクロを呼び出しすれば、セキュリティが働きます。それを、外さないで動かす方法はありますが、それは、その後のマクロの内容によります。それ以前に、CSV 自体は、テキストファイルですから、Excelのマクロを使う必要があるのでしょうか。きつい言い方ですが、悪く思わないでください。この手の質問は多いのですが、ただ教えればよいというものではないからです。

camo-tech
質問者

お礼

お返事遅れました。ありがとうございました。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

手抜きせず,必要なブック(=マクロを持たせたブック)を開いてからマクロを実行してください。 obj.workbooks.open "c:………\PERSONAL.xls" obj.application.run "PERSONAL.xls!Macro1"

camo-tech
質問者

お礼

お返事遅れました。 私の環境では、なぜかPersonal.xlsが開くことができませんでした。 ありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

誰が持ってるMacro1か,ちゃんと指定してやらないとエクセルに判りません。 obj.Application.Run "001.xls!Macro1"

camo-tech
質問者

お礼

回答のほう、ありがとうございました。 意味がわかりましたので、下記のようにしてみましたが、マクロを有効にするかどうか聞いてくるだけで、マクロ自体は実行されません。どうしてでしょうか? すみませんが教えてください。 よろしくお願いします。 Dim obj Set obj = WScript.CreateObject("Excel.Application") obj.Visible = True obj.Workbooks.Open "C:\Documents and Settings\XXXXXX\デスクトップ\ABC.csv" obj.Application.Run "C:\Documents and Settings\XXXXXX\Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLS!Macro1"

camo-tech
質問者

補足

すみません。 お礼に、マクロの有効メッセージが出るだけ、と書きましたが、フルパスで指定している「PERSONAL.XLS」が見つかりません、というエラーMSGも隠れて出ておりました。 パス、ファイル名に間違いはいのですが。。。 以上、補足いたします。

関連するQ&A

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

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

    • ベストアンサー
    • HTML
  • バッチファイルからVBA実行でエラー

    バッチファイルからエクセルのマクロを動かそうとしているのですが、 処理はきちんと動いて処理を行なうのに、エラーウィンドウが出力され ”未知実行時エラーです”(画像添付)となり困っています。 どうすれば、このエラーを無くせますでしょうか? 因みにバッチファイルは以下の通りです。 Dim obj Set obj = WScript.CreateObject("Excel.Application") obj.Visible = True obj.Workbooks.Open "C:\Documents and Settings\ne05576\My Documents\Datamove.xls" obj.Application.Run "FileMove" よろしくお願いします。

  • VBSでEXCELのXLSTARTにあるマクロを実行するには

    VBSを実行したときに既にEXCELを開いている場合にはFor Each wb In Workbooksを使ってXLSTARTフォルダにあるファイルのVBAマクロを実行できます。しかし、EXCELを開いていない場合にはCreateObject("Excel.Application")でEXCELを開いてもXLSTARTフォルダにあるファイルそのものが見つかりません。VBSを使わず、プログラムファイルからEXCELを開く場合にはXLSTARTフォルダにあるファイルも問題もなく開きます。どうすればEXCELを開いていない場合でもVBSでEXCELのXLSTARTにあるマクロを実行できるでしょうか? 因みにXLSTARTのフォルダパスは不特定多数の環境(OSはWindows95-XP、EXCELは97-2007の組合せ)で特定されていないものとします。さらにツール、オプションの全般タブの「起動時に全てのファイルを開くフォルダ」にはXLSTARTが指定されているものとします。

  • バッチファイルファイル→VBS→エクセル マクロを有効にして起動

    Win/XP エクセル2002使用です。 VBSからエクセルのマクロを有効にして立ち上げたいのですが、 上手くいきません。 バッチファイル側  cd /D c:\  C:\***.vbs  exit /B VBS側 'エクセル起動  Set WshShell = CreateObject("WScript.Shell")  WshShell.CurrentDirectory = "C:\***"  WshShell.Run "C:\***\***.xls",3  WScript.Sleep(5000)  WshShell.SendKeys("E") '←マクロを有効にする  WScript.Sleep(5000)  WshShell.SendKeys("U") '←データソースへのリンクを更新 エクセル側(マクロ)  Sub Auto_open()   Application.OnTime TimeValue("13:00:00"), "Action"  End Sub  Sub Action()    ・・・(省略)・・・  End Sub ----------------------------- また、エクセルマクロは、VBSではなく手動で立ち上げますと、 問題なく時間になった時(13時)に作動します。 VBSのRunメソッドが、 エクセルマクロの Application.OnTime を待たずに走ってしまうことで、 エクセルマクロが無効になってしまっているのではないか? もしくは、データ更新のための sendkey("U")によって マクロが無効になってしまっているのはないか? と思っています。 恐れ入りますが、 よろしくアドバイスの程お願いします。

  • vbsでexcelファイルを印刷したいのですが、印刷部数の設定がどうし

    vbsでexcelファイルを印刷したいのですが、印刷部数の設定がどうしてもわかりません。 他で見つけたスクリプトですが…。 Set obj = CreateObject("Excel.Application") Set WSHShell = CreateObject("Wscript.Shell") Set objWkBk = obj.Workbooks.Open("D:\TEST.xlsx") obj.ActiveWindow.SelectedSheets.PrintOut() obj.quit() Set obj = Nothing ご教授お願いいたします。

  • display.vbsというファイルがstartupフォルダにあるので

    display.vbsというファイルがstartupフォルダにあるのですが? display.vbsというファイルがすべてのプログラムのstartupフォルダにあるのですが、これは何でしょうか?名前からして気持ち悪いので正体を知っている人がいたら教えて欲しいです。 メモ帳で開いたら下記のようなソースになっていました。 よろしくお願いします。 -------------------------------------------- ' Self destructive VBScript for changing optimal resolution ' Set optimal resolution Set objShell = Wscript.CreateObject("Wscript.Shell") objShell.Run "c:\windows\options\cfgdisp.exe /optimum", 7, True ' Now destroy itself Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.DeleteFile("C:\Documents and Settings\All Users\Start Menu\Programs\Startup\display.vbs") --------------------------------------------

  • vbs xlsをcsvに変換

    vbsでxlsファイルをcsvファイルに変換することは可能でしょうか。 手動で拡張子をcsvにすると、カンマ区切りではないため 一列目にすべての値がスペース区切りで出力されてしまいます。 vbsで実行可能でしたらコードのご教示頂けますでしょうか。

  • ASPでExcel起動後マクロ実行

    似たような質問があったのですが、解決できませんでしたので質問させて頂きます。 下記のプログラムで、ASPでExcelを起動後、マクロを実行させてたいと考えています。 Set objEx = Server.CreateObject(Excel.Application) objEx.Application.Visible = True objEx.Workbooks.Open "C:\Excel\hoge.xls" objEx.Run("hoge.xls!Module1.macro1()") しかし、excelがバックグラウンドで実行されて表示されないので困っています。表示させる方法はあるのでしょうか? アドバイスお願い致します。

  • Excelマクロで同じブックにCSVを読み込むには

    Excelの指定したシートにCSVファイルを読み込ませたいのですが 以下のVBAマクロを実行すると新しいブックが起動して 新しいブックの方にCSVファイルが読み込まれてしまうのですが これをVBAマクロを実行しているブックの指定のシート(例えばSheet3など)に 読み込ませたいのですがどのように記述すればよいのでしょうか。 よろしくお願いします(Excel2010) Sub Macro1()  ChDir "C:\test"  Workbooks.Open Filename:= "test1.csv" End Sub

  • Excelでファイルを開くをマクロで行いたい

    マクロ初心者です "ファイルを開く"をマクロの記録で記録させると ChDir "C:\Documents and Settings\○○\△△\※※" Workbooks.Open Filename:= _ "C:\Documents and Settings\○○\△△\※※¥LotLog20070131.csv" Windows("●●●.xls").Activate End Sub と記録されます この中で 開きたいファイルネ-ム(上記ならばLotLog20070131.csv)を "●●●.xls"の どこかのセルを参照に開きたいのですが どうすれば宜しいのでしょうか?

専門家に質問してみよう