投稿日 | : 2003/08/02(Sat) 18:20 |
投稿者 | : KR |
Eメール | : |
URL | : |
タイトル | : Re^2: Excelファイルの起動確認 |
花ちゃん様、お返事どうもありがとうございます。
分かりにくい文章で申し訳ありません。順をおって説明させて頂きます。
問題は以下の内容です。
(VBで起動するファイル名を"C:\XXXX.xls"とさせて頂きました。)
@:何か適当なExcelファイルを起動して、そのままにしておきます。
A:VBよりCreateObject関数とOpenメソッドを使用してExcelファイルを起動し表示します。
(ソースはこんな感じです)
Set This_xlApp = CreateObject("Excel.Application")
This_xlApp.Workbooks Open "C:\XXXX.xls"
B:Aの処理終了時に SET This_xlApp = nothing でインスタンスを開放します。
C:一旦VBを終了します。@とAのExcelファイルは開いたままです。
D:再度VBを起動して、Excelファイル"C:\XXXX.xls"が起動するしているか、
起動している全てのExcelファイルに対してFor Each 〜 で確認します
(ソースはこんな感じです)
Set This_xlApp = GetObject(, "Excel.Application")
For Each obj_wrk In This_xlApp.Workbooks
If "C:\XXXX.xls" = obj_wrk.Path & "\" & obj_wrk.N
ame Then
Msgbox "すでに起動しています。"
End If
Next obj_wrk
すると@で起動したファイルは For Each 〜の部分で取得できるのですが
手動で起動したExcelとVBで起動したExcelのインスタンスの違いからなのか、
VBで開いたAで開いたのファイルを取得せずにループを抜けてしまいます。
これを何とかしたいのです。
>起動中かどうか知りたければ、そのファイルを同じ名前で変更して見て下さい。
とは SaveAs で同じ名前でファイルを保存しなおすことでしょうか。
以上、稚拙な説明文ですが、よろしくお願い致します。