vb6からexcel.exeを探すには?

解決


すえ太郎  2003-12-25 01:34:53  No: 110919

よろしくお願いします。
配布exeで、shell関数でVBからexcellを開きたいのですが配布先のofficeバージョンによってexcell.exeの格納場所が違うため、配布先で格納場所を手動で指定しなければなりません。
自動的に格納場所を検索する方法は有りませんか?


かな  2003-12-25 02:11:51  No: 110920

即席ですがとりあえず。

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)


かな  2003-12-25 02:16:37  No: 110921

略しすぎました。
変数 myExecutable が".xls"
変数 TempFolder は予め取得した"temp"フォルダがある物とします。

この例では、例えば、".xls"を".doc"に変えれば、ワードやワードパッドになります。


すえ太郎  2003-12-25 17:35:39  No: 110922

かなさん  どうもありがとうございました。
CreateObject を使用して何とか解決しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加