Excelの読込み

解決


超小物  2003-09-10 00:39:29  No: 79356

VB.NETでExcelのデータを読込むということをしています。
同じファイルの2重起動をエラーとしてメッセージボックスに表示しようとしたのですが
(自分で読込みファイルを起動した状態で実行)、エラーとして認識してくれません。
それが通常の動作ならエラーとして処理する必要はないのですが、Excelで"既に開かれています"みたいなメッセージを見たことがあるような気がしたので・・・
ご存知の方よろしくお願いします。

Excelは2000を使用しています。

Excel起動のソース↓
On Error GoTo Err_trap
  Exl = CreateObject("excel.application")
  Exl.Workbooks.Open("ファイルのパスを指定")
Err_trap:
  Msgbox("起動中のファイルが選択されました")


oku  URL  2003-09-10 09:39:29  No: 79357

VBレスキュ−(花ちゃん)のサイトに載ってますよ。
http://www.bcap.co.jp/hanafusa/


超小物  2003-09-10 20:04:51  No: 79358

oku様ありがとうございます。
VBレスキュ−(花ちゃん)のサイトを見させていただきました。

VBレスキュ−に表示されていたように試してみたのですが、
読み取りExcelを起動後に実行した時のErr.Numberと
読み取りExcelを起動しないで実行した時のErr.Numberは
両方とも"0"でした。これでは2重起動なのか判断つきません。
Excelの2重起動防止方法をご存知の方どうかよろしくお願いします。

その時のソースです。
         Exl = CreateObject("excel.application")
        '
        If Err.Number Then
            MsgBox("Excel が起動されていません。")
            ' エラーが発生した場合は Err オブジェクトをクリアします。
            Err.Clear()
        Else
            MsgBox("Excel はすでに起動中です。")
        End If

        Exl.Visible = False

        '指定ファイルOpen
        Exl.Workbooks.Open("ファイルのパス")
        
        If Err.Number Then
            MsgBox("Excel が起動されていません。")
            ' エラーが発生した場合は Err オブジェクトをクリアします。
            Err.Clear()
        Else
            MsgBox("Excel はすでに起動中です。")
        End If

※APIの方は試していませんが、上記の方法ではできないのでしょうか?
(過去に痛い経験あるのであまりAPIは使用したくないのですが・・・)


Take1  2003-09-10 21:33:44  No: 79359

こんな感じでどうでしょう。
ただし"C:\Test.xls"があるかどうかの確認等ほかのエラー
の可能性をすべて考慮しないとこれでは他のエラーも拾うと思います。

        On Error Resume Next
        Dim mFile As String
        mFile = "C:\Test.xls"

        Exl = CreateObject("excel.application")

        '指定ファイルOpen
        Rename(mFile, mFile)

        If Err.Number Then
            MsgBox(mFile & "はすでに起動中です。")
            Err.Clear()
            Exl = Nothing
        Else
            Exl.Workbooks.Open(mFile)
            Exl.Visible = True
        End If


超小物  2003-09-10 22:43:13  No: 79360

oku様、Take1様ありがとうございました。
Renameを使用した方法で2重起動の確認ができました。
Take1様のご忠告どうり他のエラーと区別できるように気をつけます。
本当にありがとうございました。


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

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






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