よろしくお願いします。
配布exeで、shell関数でVBからexcellを開きたいのですが配布先のofficeバージョンによってexcell.exeの格納場所が違うため、配布先で格納場所を手動で指定しなければなりません。
自動的に格納場所を検索する方法は有りませんか?
即席ですがとりあえず。
1.シェルでなく、CreateObject で起動する方法。
Dim objXl As Object
略
Set objXl = CreateObject("Excel.Application")
略
2.APIで無理矢理探す方法。
例では、拡張子".xls"に関連付けたアプリを探しています。
Declare Function FindExecutable Lib "shell32.dll" _
Alias "FindExecutableA" _
(ByVal lpFile As String, _
ByVal lpDirectory As String, _
ByVal lpResult As String) As Long
中略
' ファイル名を指定
strFilename = "Dummy." & myExecutable
' デフォルトディレクトリを指定
strDefaultDirectory = TempFolder
filenum = FreeFile
Open strDefaultDirectory & strFilename For Output As #filenum
Close #filenum
' 関連付けられている実行可能ファイル名を取得
lngExecutableHInstance = _
FindExecutable( _
strFilename, _
strDefaultDirectory, _
strExecutableFileName)
Kill strDefaultDirectory & strFilename
' 実行可能ファイル名を表示
myApplication = _
Left$(strExecutableFileName, _
InStr(strExecutableFileName, _
vbNullChar) - 1)
略しすぎました。
変数 myExecutable が".xls"
変数 TempFolder は予め取得した"temp"フォルダがある物とします。
この例では、例えば、".xls"を".doc"に変えれば、ワードやワードパッドになります。
かなさん どうもありがとうございました。
CreateObject を使用して何とか解決しました。
ツイート | ![]() |