VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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 で同じ名前でファイルを保存しなおすことでしょうか。

以上、稚拙な説明文ですが、よろしくお願い致します。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -