投稿日 | : 2006/07/03(Mon) 11:58 |
投稿者 | : かずちん |
Eメール | : |
URL | : |
タイトル | : ありがとうございました |
> > 使用するパソコンは全て同一の環境にOFFICEがインストールされている為
> > あまり良くはありませんが、力技で解決いたしました。
>
> それが嫌だったら、FindExecutable を使ったらどうかな。
>
> Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExec
utableA" _
> (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As L
ong
> Dim rc As Long, Buf As String * 1024
> rc = FindExecutable("Dummy.xls", "", Buf)
>
> で、BufにExcel.exeのフルパスが得られる。
> #(Dummy.xlsは実在していないと駄目なのか?)
こんなAPIがあるとは知りませんでした。
早速使ってみましたが、最初の引数はファイルが存在しないと駄目なのでExcel.exeのフルパスを
得る際にダミーのExcelファイルを一時的に作成・削除で対処しました。
又Bufを1024バイトで作成しているので
Left(Buf,Instr(Buf,vbNullChar)-1)でフルパス部分のみ抽出しています。
ダンボさん、色々とありがとうございました。
ただ最初の引数を設定する際にStringのバイト数を設定する必要性がわかっていないのでそこら辺は
自分で調べてみようと思います。
ちなみにバイト数を指定しないで実行するとVB自体が落ちてしまいました。