Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10123 / 13646 ツリー ←次へ | 前へ→

【23546】VBAから.wsfを実行 Qwsf 05/3/27(日) 15:43 質問[未読]
【23556】Re:VBAから.wsfを実行 G-Luck 05/3/28(月) 10:48 発言[未読]
【23560】Re:VBAから.wsfを実行 Qwsf 05/3/28(月) 13:07 発言[未読]
【23561】Re:VBAから.wsfを実行 G-Luck 05/3/28(月) 13:13 発言[未読]
【23562】Re:VBAから.wsfを実行 Qwsf 05/3/28(月) 13:36 発言[未読]
【23563】Re:VBAから.wsfを実行 G-Luck 05/3/28(月) 13:48 発言[未読]
【23573】Re:VBAから.wsfを実行 ちゃっぴ 05/3/28(月) 23:25 発言[未読]
【23579】Re:VBAから.wsfを実行 Qwsf 05/3/29(火) 0:22 発言[未読]
【23580】Re:VBAから.wsfを実行 ちゃっぴ 05/3/29(火) 0:37 発言[未読]
【23585】Re:VBAから.wsfを実行 Qwsf 05/3/29(火) 10:16 お礼[未読]
【23581】Re:VBAから.wsfを実行 Qwsf 05/3/29(火) 0:38 お礼[未読]
【23582】Re:VBAから.wsfを実行 G-Luck 05/3/29(火) 8:42 発言[未読]
【23583】Re:VBAから.wsfを実行 IROC 05/3/29(火) 8:52 発言[未読]
【23587】Re:VBAから.wsfを実行 Qwsf 05/3/29(火) 10:25 発言[未読]
【23586】Re:VBAから.wsfを実行 Qwsf 05/3/29(火) 10:18 発言[未読]

【23546】VBAから.wsfを実行
質問  Qwsf E-MAIL  - 05/3/27(日) 15:43 -

引用なし
パスワード
   はじめまして,wsfファイルという存在を知り,初めて利用してみました。
さっそく,質問があります。
abc.wsfの実行方法についてです。ダブルクリックするときちんと実行されます。このabc.wsfをエクセルのVBAから実行する方法を今模索中です。いろいろネットで調べて試したのですが実行されませんでした。その例を紹介します。おかしな点があれば遠慮なくご指南ください。
OSは,windowsXP,windowsME,windows98SEを使っています。
実行例その1:runwsf.xls内のモジュール1
////////////////////////////////////////////////
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd_ As Long) As Long


Sub Run_Wsf()
On Error GoTo errline
      
  ShellExecute 0, "open", "abc.wsf", "", "%WINDIR%\system32\wscript.exe", 1
  
    
errline:
Err = 0

End Sub

実行例その2:runwsf.xls内のモジュール2
////////////////////////
Sub Run_Wshell()
  Dim WSHShell
  Dim wsfPath As String
  
  wsfPath = ThisWorkbook.Path & "\abc.wsf"
    
  Set WSHShell = CreateObject("WScript.Shell")
  
  WSHShell.Run wsfPath
  MsgBox "abc.wsfを起動しました。"

End Sub

'一応”abc.wsfを起動しました。”というメッセージは表示されますが,何も実行されているようには見えません。

実行例その3:runwsf.xls内のモジュール3
///////////////////////
Sub Run_Shell()
  
   Shell "wscript.exe g:\temp\abc.wsf"
  
End Sub
/////////////////////////////////////
以上3つほど試してみましたが,きちんと実行されませんでした。
ぜひ,アドバイスをお待ちしております。

【23556】Re:VBAから.wsfを実行
発言  G-Luck  - 05/3/28(月) 10:48 -

引用なし
パスワード
   ▼Qwsf さん:

私も詳しくはありませんが、

  myFName = ThisWorkbook.Path & Application.PathSeparator & "tmp.wsf"
  Shell "wscript """ & myFName & """"

で、実行できています。

【23560】Re:VBAから.wsfを実行
発言  Qwsf E-MAIL  - 05/3/28(月) 13:07 -

引用なし
パスワード
   ▼G-Luck さん:
>▼Qwsf さん:
>
>私も詳しくはありませんが、
>
>  myFName = ThisWorkbook.Path & Application.PathSeparator & "tmp.wsf"
>  Shell "wscript """ & myFName & """"
>
>で、実行できています。

アドバイスありがとうございます。
さっそくご指摘にしたがい,試してみましたが.wsfファイルは実行されません
でした。

ちなみに,私の環境はエクセル2002,windowsME(今回実行した)とwindowsXP
(まだ実行していない)です。
そちらの環境をよろしかったら教えてください。

【23561】Re:VBAから.wsfを実行
発言  G-Luck  - 05/3/28(月) 13:13 -

引用なし
パスワード
   ▼Qwsf さん:

Excel2003、WinXP(Pro and Hom)です。

【23562】Re:VBAから.wsfを実行
発言  Qwsf E-MAIL  - 05/3/28(月) 13:36 -

引用なし
パスワード
   ▼G-Luck さん:
>▼Qwsf さん:
>
>Excel2003、WinXP(Pro and Hom)です。

ありがとうございます。
質問がもうひとつあります。
Shell "wscript """ & myFName & """"
で使われているのは
Shell関数ですか。
もしそうなら2002の仕様と異なっているようですが,
2002では
Shell(pathname[,windowstyle])
のようになっています。
それとも,使い方が他にもある?
見たところ,G-Luckさんの場合は,
wscript.exeに引数としてmyFNameを渡しているような
使い方に見えるのですが。

【23563】Re:VBAから.wsfを実行
発言  G-Luck  - 05/3/28(月) 13:48 -

引用なし
パスワード
   ▼Qwsf さん:

>wscript.exeに引数としてmyFNameを渡しているような
>使い方に見えるのですが。

私の認識は、Documents and Settings などの空白を含むフォルダ名を認識するためと思っています。空白を含まない場合は""は削除しても問題なく実行されます。

【23573】Re:VBAから.wsfを実行
発言  ちゃっぴ  - 05/3/28(月) 23:25 -

引用なし
パスワード
   そのWSFに問題はありませんかね?

手動で起動して、正常に動いているのでしょうかね?

【23579】Re:VBAから.wsfを実行
発言  Qwsf E-MAIL  - 05/3/29(火) 0:22 -

引用なし
パスワード
   ▼ちゃっぴ さん:
>そのWSFに問題はありませんかね?
>
>手動で起動して、正常に動いているのでしょうかね?
はい,abc.wsfをダブルクリックするときちんと動作します。
返事ありがとうございました。

【23580】Re:VBAから.wsfを実行
発言  ちゃっぴ  - 05/3/29(火) 0:37 -

引用なし
パスワード
   >はい,abc.wsfをダブルクリックするときちんと動作します。
>返事ありがとうございました。

では、Shell関数とか、Run Methodの戻り値は?
Run Methodは同期実行させた方がいいでしょうね。

【23581】Re:VBAから.wsfを実行
お礼  Qwsf E-MAIL  - 05/3/29(火) 0:38 -

引用なし
パスワード
   G-Luckさん,ちゃっぴさんありがとうございました。
一応解決しました。

abc.wsfがあるフォルダ>c:\abc

ShellExecute 0, "open", "abc.wsf", "", "c:\abc\", 1

で実行できました。
というか,これは私のミスで。実は,マルチポストしてしまいました。
問題の解決を急ぐあまり,別の掲示板にも同じ質問を投稿してしまい,
そちらで,マルチポストを指摘されました。そして,そちらで丁寧に
解決策も教えてもらいました。それが,上のものでした。

というわけで,丁寧にご回答いただいたのに,ちょっと裏切ったような
後ろめたさを感じながらお詫びとお礼をさせていただきこの質問を打ち切らせて
いただきます。
皆さんの善意に感謝しています。もし,また別件でお邪魔するかもしれませんが
そのときはよろしくお願いします。


▼Qwsf さん:
>はじめまして,wsfファイルという存在を知り,初めて利用してみました。
>さっそく,質問があります。
>abc.wsfの実行方法についてです。ダブルクリックするときちんと実行されます。このabc.wsfをエクセルのVBAから実行する方法を今模索中です。いろいろネットで調べて試したのですが実行されませんでした。その例を紹介します。おかしな点があれば遠慮なくご指南ください。
>OSは,windowsXP,windowsME,windows98SEを使っています。
>実行例その1:runwsf.xls内のモジュール1
>////////////////////////////////////////////////
>Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
>(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
>ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd_ As Long) As Long
>
>
>Sub Run_Wsf()
>On Error GoTo errline
>      
>  ShellExecute 0, "open", "abc.wsf", "", "%WINDIR%\system32\wscript.exe", 1
>  
>    
>errline:
>Err = 0
>
>End Sub
>
>実行例その2:runwsf.xls内のモジュール2
>////////////////////////
>Sub Run_Wshell()
>  Dim WSHShell
>  Dim wsfPath As String
>  
>  wsfPath = ThisWorkbook.Path & "\abc.wsf"
>    
>  Set WSHShell = CreateObject("WScript.Shell")
>  
>  WSHShell.Run wsfPath
>  MsgBox "abc.wsfを起動しました。"
>
>End Sub
>
>'一応”abc.wsfを起動しました。”というメッセージは表示されますが,何も実行されているようには見えません。
>
>実行例その3:runwsf.xls内のモジュール3
>///////////////////////
>Sub Run_Shell()
>  
>   Shell "wscript.exe g:\temp\abc.wsf"
>  
>End Sub
>/////////////////////////////////////
>以上3つほど試してみましたが,きちんと実行されませんでした。
>ぜひ,アドバイスをお待ちしております。

【23582】Re:VBAから.wsfを実行
発言  G-Luck  - 05/3/29(火) 8:42 -

引用なし
パスワード
   ▼Qwsf さん:

もうみていないかな?
出来れば、回答のリンクを教えてほしいです。

【23583】Re:VBAから.wsfを実行
発言  IROC  - 05/3/29(火) 8:52 -

引用なし
パスワード
   こちらのサイトではマルチポスト禁止ではないですよ。
画面の上の方に
「マルチポストに関して、主宰者の意見をまとめました。ここ をごらんください。」
というのがあります。

【23585】Re:VBAから.wsfを実行
お礼  Qwsf E-MAIL  - 05/3/29(火) 10:16 -

引用なし
パスワード
   ▼ちゃっぴ さん:
>>はい,abc.wsfをダブルクリックするときちんと動作します。
>>返事ありがとうございました。
>
>では、Shell関数とか、Run Methodの戻り値は?
>Run Methodは同期実行させた方がいいでしょうね。

アドバイスありがとうございます。
戻り値は確かめていませんでした。

さて,23581で書かせていただいたようにこの質問は解決した
ということで,今まで,ご丁寧なアドバイスに感謝いたします。
また,ご指摘の戻り値は勉強のために実行して確認してみます。

【23586】Re:VBAから.wsfを実行
発言  Qwsf E-MAIL  - 05/3/29(火) 10:18 -

引用なし
パスワード
   ▼G-Luck さん:
>▼Qwsf さん:
>
>もうみていないかな?
>出来れば、回答のリンクを教えてほしいです。

見てます。というか,返信メールが教えてくれます。

http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi?mode=al2&namber=17628&rev=&no=0

です。

【23587】Re:VBAから.wsfを実行
発言  Qwsf E-MAIL  - 05/3/29(火) 10:25 -

引用なし
パスワード
   ▼IROC さん:
>こちらのサイトではマルチポスト禁止ではないですよ。
>画面の上の方に
>「マルチポストに関して、主宰者の意見をまとめました。ここ をごらんください。」
>というのがあります。

別の掲示板で指摘を受けたあと,一応,こちらの「マルチポスト」に関してを読んでみました。が,多分,私の読み違いか「マルチポスト」はだめなのだろうという先入観もあり前半部分だけ読んで,禁止されていると勘違いし,今回のようなメッセージになったようです。
そうですか,助かりました。一安心。

10123 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free