VBでShell○なのにShellExecute×
http://support.microsoft.com/kb/170918/ja
等を参考に、コンソールアプリからHTMLファイルを呼び出すだけのEXEをVB(Visual Basic 2008 Express Edition)で作ったところ、
Shell関数ではHTMLがIEで起動されるのに対し、ShellExecute関数ではダメでした。
HTMLへのファイルパスが正しいことはMsgBoxで確認しました。
また、ほぼ同じソースをbasにしてExcelから起動すると、ShellExecuteでも起動しました。
以下がソース(抜粋)になりますが、原因が分かる方がおられましたら、ヒントだけでも、ご教示いただけると幸いです。
よろしくお願いいたします。
- - - - - - - - - - - - - - - - - - - - - -
Option Explicit On
Module Module1
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpszOp As _
String, ByVal lpszFile As String, ByVal lpszParams As String, _
ByVal lpszDir As String, ByVal FsShowCmd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
'エラーコード宣言略
Function StartDoc(ByVal DocName As String) As Long
Dim Scr_hDC As Long
Scr_hDC = GetDesktopWindow()
'こちらだと成功 StartDoc = Shell("explorer.exe" & " " & DocName, vbNormalFocus)
StartDoc = ShellExecute(Scr_hDC, "Open", DocName, _
"", "C:\", SW_SHOWNORMAL)
End Function
Sub Main()
Dim r As Long, msg As String
r = StartDoc(CurDir() & "\target.html")
'エラーハンドリング省略
End Sub
End Module
お礼
回答有難う御座います。 .lnk でショートカットファイルが開けるのは知りませんでした。 説明不測で失礼致しました。 ショートカットファイルとそれ以外も開ける様に出来ないでしょうか? If文で通常ファイルとショートカットファイルの区別も出来ないうえ ErrorTrapも引っかからないので困っています。
補足
失礼致しました。 CreateObject("Shell.Application").ShellExecute でショートカットのファイルを開くことは可能でした。 原因は不明ですが、何かのエラーで開けませんでした。 .lnk 参考になりました。 お手数お掛けして申し訳ありませんでした。