戻る


☆実行(なんだそれって感じ)
Dim MyWSHL

Set MyWSHL = CreateObject("WScript.Shell")
MyWSHL.Run("実行したいもの")
Set MyWSHL = Nothing
実行したい内容によって書き方いろいろ

たとえば電卓を実行したい場合
.Run("calc.exe")

たとえばメモ帳を実行したい場合、というか、メモ帳を素で実行したい場合、というかメモ帳で新規作成したい場合
.Run("notepad.exe")

たとえばメモ帳で既存ファイルを開きたい場合(""の数と空白の入れ方に注意)
.Run("""notepad.exe"" ""開きたいファイルのフルパス""")

電卓やメモ帳など、「正体がわかりきった」ソフトというかアプリというかプログラムというかexeファイルというか、の場合は名前だけでいいみたいですけど("EXCEL.EXE", "MSACCESS.EXE", "WINWORD.EXE"あたりも、わかりきったものとしてあつかってもらえる様子)、出どころ不明のプログラムの場合(自作とかネット上から拾ってきたとか)は、
.Run("C:\MyFooApp\MyHogeSoft\Puni.exe")
な感じで、フルパス入れてください。

実行できるファイルってのは何も実行ファイルに限ったもんじゃないんで(いったい何を言っているんだ)、いや、exeじゃなくても実行できるファイルはあるわけで、たとえば、batファイルなんてものにも適用できます。
.Run("batファイルのフルパス")

それから言わずもがなのvbsファイル。これだって実行ファイルじゃないけど実行できます。
.Run("vbsファイルのフルパス")
ではダメです。
vbsファイルを実行させているものの正体はどうやら wscript.exe というものらしいです。というわけで
.Run("""wscript.exe"" ""実行したいvbsファイルのフルパス""")



☆ショートカット作成
Dim MyWSHL
Dim MyLNK

Set MyWSHL = CreateObject("WScript.Shell")
    Set MyLNK = MyWSHL.CreateShortcut("ショートカットを置きたい場所フルパス" & "\" & "ショートカットにつけたい名前" & ".lnk")
    MyLNK.IconLocation = "ファイル実体のフルパス" & ",0"
    MyLNK.TargetPath = "ファイル実体のフルパス"
    MyLNK.WorkingDirectory = "ファイル実体がある場所フルパス"
    MyLNK.Save
    Set MyLNK = Nothing
Set MyWSHL = Nothing
これも例を書かなきゃ分かりにくいかな。
"ショートカットを置きたい場所フルパス"ってのは省略可能ですけど、その場合はここ(vbsファイルのある場所)になります。
Set MyWSHL = CreateObject("WScript.Shell")
Set MyLNK = MyWSHL.CreateShortcut("えっくせる.lnk")
MyLNK.IconLocation = "C:\Program Files\Microsoft Office\Office10\EXCEL.EXE" & ",0"
MyLNK.TargetPath = "C:\Program Files\Microsoft Office\Office10\EXCEL.EXE"
MyLNK.WorkingDirectory = "C:\Program Files\Microsoft Office\Office10"
MyLNK.Save
Set MyLNK = Nothing
Set MyWSHL = Nothing
↑Excel.EXE のある場所はマシンによって違うような気がします。
(丸ごとコピーしてもエラーになる可能性あり)
自分で調べてください。



☆場所のフルパス文字列取得
カレントディレクトリ(今いる場所)だったら
Dim MyWSHL
Dim MyStr

Set MyWSHL = CreateObject("WScript.Shell")
MyStr = MyWSHL.CurrentDirectory
Set MyWSHL = Nothing

MsgBox MyStr


と、思ってたんですけど、どうなんでしょうかね。
このやり方で得られた答って、どうも信用できないことがある。
(きわどい使い方をした場合に限ると思うんですけど、何度かデタラメな答に出くわした)
↓のほうがいいような気がしてきました。
Dim MyStr

MyStr = Replace(WScript.ScriptFullName, WScript.ScriptName, "")
MyStr = Left(MyStr, Len(MyStr) - 1)

MsgBox MyStr
デスクトップとかマイドキュメントとか、どう見てもまともじゃない場所だったら
Dim MyWSHL
Dim MyStr1, MyStr2

Set MyWSHL = CreateObject("WScript.Shell")
MyStr1 = MyWSHL.SpecialFolders("Desktop")
MyStr2 = MyWSHL.SpecialFolders("MyDocuments")
Set MyWSHL = Nothing

MsgBox MyStr1 & Chr(10) & MyStr2 
まともじゃない? はあ? 意味わからん、と思った方は、たぶんこの機能を差し迫って必要とはしていません。
「どう見てもこいつら普通じゃねーぞ、どうしたらいいんだぁ?」となったときに、もし憶えていたらあらためてお立ち寄りください。