- ベストアンサー
VBからhtaファイルを開くには?
VB6.0で小さなアプリケーションを作っています。 同じフォルダ内にあるhtaファイルをVBから開きたいのですが、うまくいかずに悩んでしまっています。 具体的には、VBのフォームにボタンを作り、それを押すとhtaアプリが別ウィンドウで起動するという形です。 この方法について何かご存知でしたらアドバイス宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
環境により実行ファイルが違う場所にあるかもしれないのですが、以下私の環境(Win2K,VB6.0SP6)での記述です。 Private Sub Command1_Click() Call Shell("mshta.exe C:\*.hta", vbNormalFocus) End Sub と記載すれば実行できました。 (もちろんですが「*.hta」というファイルを「C:\」に作ってある状態です) Shell関数は例えば Dim Ret As Long などで宣言した変数を使用して Ret = Shell(***,vbNormalFocus) (***はファイル名など)などでも使えます。 Shell関数についてはヘルプなどで見るとわかるかと思いますよ。 ちなみに、空白があるフォルダ名(My Documentsなど)を使用する場合などはこの方法だとエラー(実行されない)になる場合があります。 その際は Dim MyFile As String MyFile = Chr(34) & "C:\Documents and Settings\Administrator\My Documents\***.hta" & Chr(34) Call Shell("mshta.exe " & MyFile,vbNormalFocus) と前後にChr(34)を使用すると使えるようになります。 ("mshta.exe "のexeのあとに必ず空白を一つ入れてください) 他にもAPIを使用した方法などありますが、一つの方法として書いておきます。
その他の回答 (2)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
おっと、リロードしたら書き込みありましたね^^; 参考URLの張り忘れしたので、追記です。 http://www.vbvbvb.com/jp/gtips/0951/gShellExecuteSwShowNormalOpen.html
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
Private 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 Const DEF_HTA_FILE As String = "c:\Test.hta" Sub Test1() '関連づいたアプリケーションで立ち上げる Call ShellExecute(0, "open", DEF_HTA_FILE, vbNullString, Environ("windir"), 1) End Sub Sub Test2() 'アプリケーションを指定して立ち上げる Call Shell("mshta.exe " & DEF_HTA_FILE) End Sub
お礼
関連付けアプリで立ち上げる方法もあるのですね。 とても勉強になります。 早々にご回答いただきありがとうございました。 教えていただいたリンクも参考にさせていただきます。
お礼
Shell関数をいろいろな書き方で試してもなかなかうまくいかずに悩んでいたのですが、おかげでスッキリ解決できました。APIの使い方も興味あるのでもっと勉強してみようと思います。早々に回答いただきありがとうございました。