OKWaveコミュニティー

EXCELのVBAのコマンドボタンの動作について


新規ユーザー登録(無料)今すぐ登録しよう!!
はじめての方へ OKWaveではこんなことができます!
FAQ(よくある質問) OKWaveで困ったことはこちら
特集
ブログパーツを貼り付けよう!
OKWaveのQ&Aがブログパーツになりました。
貼り付けは簡単!
ブレイク寸前!?水野愛也、参上
キムタク、オダギリジョーを倒せる唯一の男? 恋愛体育教師・水野愛也さんと恋愛対談
さあ、気軽に質問してみましょう!   例: 新型PSPのいいところってどこですか?

あと400文字入力できます。  こちらのページでは2000文字まで入力できます。

質問

QNo.2825570 EXCELのVBAのコマンドボタンの動作について
質問者:9_chan EXCELのVBAでコマンドボタンを押したとき、あるテキストを、単にテキストとして開く為に、以下のコーディングをしました。
しかし、「shell」コマンドは実行形式でないといけないようで、うまく行きません。どなたか、判る方いらっしゃいますか?
---------------------------------------------
wk_path = ThisWorkbook.Path & "\memo1.txt"
wk_rc = Shell(wk_path, vbNormalFocus)
---------------------------------------------
(エラーコード:メッセージ)
5:プロシジャーの呼び出し、または引数が不正です。
困り度:
  • 困っています
質問投稿日時:
07/03/12 10:12
この質問に対する回答は締め切られました。

回答

ANo.6 createobject("shell.application").shellexecute "C:\Documents and Settings\All Users\Documents\desktop.ini"
とかでも
回答者:nicotinism
種類:回答
どんな人:一般人
自信:参考意見
回答日時:
07/03/15 00:59
この回答への補足有難うございます、しかし、
notepadがでて来てしまいます
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答良回答20pt

ANo.5 なるほど。
Chr(34) で囲まなければならない場合は

wk_rc = Shell("CMD /C START " Chr(34) & Chr(34) & " " & Chr(34) & wk_path & Chr(34))

という感じでしょうか。
回答者:tsukasa-12r
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
07/03/14 21:52
この回答へのお礼うまく行きました
wk_rc = Shell("CMD /C START " & Chr(34) & Chr(34) & " " & Chr(34) & wk_path & Chr(34))
※但し、"CMD /C START " & Chr(34)・・・&を追加しました

有難うございました

回答

ANo.4 なるほど。
>>wk_rc = Shell("CMD /C START " & Chr(34) & wk_path & Chr(34))

chr(34) で囲ってしまうとダメですね。

Shell("CMD /C START " & wk_path)

でないと。原因はコマンドプロンプトでSTART /? をやってみてください。

" で囲うとタイトルと見なされてしまうようです。
回答者:driverII
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
07/03/13 20:08
この回答への補足driverII様、度々ありがとうございます。

詳しくないので定かでないですけど、
C:\Documents and Settings\xxx  のようにパスにSPACEがあるためか、パスを指定するときは、Chr(34) ["] でくくらないと、だめだと思うのですけど・・・

START /?  やりましたけど・・・どうすれば、良いのでしょう?
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.3 お手軽な方法として、Windows XP/2000/NT の場合 ( Vista は未確認です。)
wk_rc = Shell("CMD /C START " & wk_path )
という手もあります。
( Windows 95/98/ME の場合は CMD の代わりに COMMAND になると思いますが未確認です。)
回答者:tsukasa-12r
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
07/03/13 00:16
この回答への補足あれ?
wk_rc = Shell("CMD /C START " & Chr(34) & wk_path & Chr(34))
コマンド画面が出てくるだけですけど・・・
因みにxpです
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.2 では、ちょっと高度になりますが、

Win32API の FindExecutable を使えば、出来なくはありません。

[Win32API の使い方]
http://www.ne.jp/asahi/hishidama/home/tech/excel/dll.html

また、レジストリを見るという方法もあるようです。
回答者:driverII
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
07/03/12 14:16
参考URL: http://dobon.net/vb/dotnet/system/findassociatedexe.html
この回答へのお礼なんか、難しそうですね

あとで、トライしてみます
有難うございました。

回答良回答10pt

ANo.1 "notepad " & wk_path

でいけませんか?
回答者:driverII
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
07/03/12 10:16
この回答へのお礼あっ!行きました。
ありがとうございます。

でも、出来れば、”.txt" に対応した、アプリがだしたいなあ・・・
関連Q&A