プロが教える店舗&オフィスのセキュリティ対策術

こんにちは
エクセルで作成したマクロをバッチファイルできどうして実行しております。

ファイルAとBをつかってバッチファイルとして起動しておりましたが、
起動時DOS窓が出ないようにするため、ファイルCをつかってます。
現状 3ファイルをつかってます。
これをひとまとめにすることはできないのでしょうか?

宜しくお願いいたします。

ファイルA test.vbs
---------------
Dim obj
Set obj=WScript.CreateObject("Excel.Application")

obj.Visible=False
obj.Workbooks.Open WScript.Arguments(0)
obj.Application.Run WScript.Arguments(1)

obj.quit
-------------
ファイルB a.bat 
中身
C:\Users\test\Desktop\test\test.vbs "C:\xxx.xlsm"  ○○○
vbsファイル xlsmファイル ○○○はマクロ名

------------------
ファイルc ouga.vbs
Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "C:\a.bat",0
Set oShell = Nothing
------------------

A 回答 (4件)

以下のコードでも、Excelの常駐が残るようでもありませんね。


しかし、
obj.Visible=False
となると、どう変わるかわかりません。自動で閉じるようにしているのでしょうか。


':xlStart.VBS
Dim xlApp
Dim xlBook
Const FullFileName ="C:\TestBook1.xlsm"
Const MacroName ="TestMacro1"
Set xlApp = CreateObject("Excel.Application")
With xlApp
.Visible =True
Set xlBook=.Workbooks.Open(FullFileName)
.Run xlBook.Name &"!"& MacroName
End With
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
やりたいことができあました。 ありがとうございました。
2点質問させてください。
Set WSH = CreateObject("WScript.Shell")
pathis = WSH.SpecialFolders("Desktop") & "\"
のようなことをCONST fullfilenameのところに記載するとエラーとなります。
いまは、(FULLFILENAME)のところにかいております。
!とは何をいみしているのでしょうか?
Visible=falseにしている理由は実行時、タスクスケジューラから透過的に実行するためです。
以上 よろしくおねがいいたします。

お礼日時:2017/02/25 04:31

test.vbsの


obj.Workbooks.Open WScript.Arguments(0)
obj.Application.Run WScript.Arguments(1)

obj.Workbooks.Open "C:\xxx.xlsm"
obj.Application.Run "○○○"
に変えてはいかがでしょうか。
そうすれば、test.vbsの実行だけですみます。
    • good
    • 0

こんにちは。



>Set WSH = CreateObject("WScript.Shell")
>pathis = WSH.SpecialFolders("Desktop") & "\"
昔は、それで良かったようですが、こちらで実行してみると、そのWSH の行の部分でエラーが発生しています。何か仕様が変わったのかもしれません。
//
エラー内容:(Microsoft VBScript 実行時エラー)
引数の数が一致していません。または不正なプロパテイを指定しています。:'WSH'
//

そこで、PathIs= CreateObject("WScript.Shell").SpecialFolders("Desktop")& "\"

とすると、問題なく通りました。実際の内容は、最後で御覧ください。

>!とは何をいみしているのでしょうか?
Excelの中での決まりごとです。いつくか試してみたことがあるのですが、他にはなかったようです。

それと、
.Run xlBook.Name &"!"& MacroName
xlBook.Name & ! はつけなくても稼働しました。


':xlStart.VBS
Dim xlApp
Dim xlBook
Dim FullFileName
Dim PathIs
PathIs= CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
Const BookName ="TestBook1.xlsm"
Const MacroName ="TestMacro1"
FullFileName =PathIs & BookName
Set xlApp = CreateObject("Excel.Application")
With xlApp
.Visible =False
Set xlBook=.Workbooks.Open(FullFileName)
.Run xlBook.Name &"!"& MacroName
End With
    • good
    • 0

#3の不手際ですみません。



追伸、Visible=False だから、手動では終わらないので、End With の後、以下のようなコードが必要だと思います。TaskManager 等で、調べてみてください。

xlBook.Close False
'Close で保存はしないというオプションです。
Set xlBook = Nothing
xlApp.Quit
Set xlApp =Nothing
    • good
    • 0

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