あなたの習慣について教えてください!!

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"

A 回答 (3件)

>あるフォルダのcsvファイル全てに対して1つのvbsキックで処理が行なわれるようにするには、


VBSキックで処理とはなんでしょうか?何をするのですか?

私は、とても疑問に感じています。ご質問者さんは、ある程度VBAはご存知だと思います。それなのに、PERSONAL.XLS を呼び出すというのは、Excel(全バージョン)にとって、もっともセキュリティの甘い場所にアクセスすることですから、出来るなら、そのような方法は変えてほしいと思います。

DefaultFilePath (ふつうは、My Documentです)の一般ファイル(xls)にしたらどうですか?PERSONAL.XLSを狙うというのは、典型的なOfficeのウィルスの考え方です。そして、セキュリティをくぐり抜ける方法を教えてほしいというわけです。

最初から、Excelのマクロからしたらいかがですか?もしくは、Excelマクロを呼び出さずに、VBScript のスクリプトにExcelマクロを移植してしまえばよいです。もちろん、Excelのタイプライブラリを使う方法は出来るものと出来ないものがありますから、VBScript では、難しい部分はあります。

>マクロを有効にするかどうか聞いてくるだけで、マクロ自体は実行されません。どうしてでしょうか?

ダイレクトにマクロを呼び出しすれば、セキュリティが働きます。それを、外さないで動かす方法はありますが、それは、その後のマクロの内容によります。それ以前に、CSV 自体は、テキストファイルですから、Excelのマクロを使う必要があるのでしょうか。きつい言い方ですが、悪く思わないでください。この手の質問は多いのですが、ただ教えればよいというものではないからです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/08/31 11:34

手抜きせず,必要なブック(=マクロを持たせたブック)を開いてからマクロを実行してください。



obj.workbooks.open "c:………\PERSONAL.xls"
obj.application.run "PERSONAL.xls!Macro1"
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2010/08/31 11:35

誰が持ってるMacro1か,ちゃんと指定してやらないとエクセルに判りません。



obj.Application.Run "001.xls!Macro1"

この回答への補足

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

パス、ファイル名に間違いはいのですが。。。

以上、補足いたします。

補足日時:2010/06/10 10:21
    • good
    • 0
この回答へのお礼

回答のほう、ありがとうございました。

意味がわかりましたので、下記のようにしてみましたが、マクロを有効にするかどうか聞いてくるだけで、マクロ自体は実行されません。どうしてでしょうか?

すみませんが教えてください。

よろしくお願いします。


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"

お礼日時:2010/06/10 10:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報