Excelが既に起動している場合のブックを開く処理


よっしー  2009-08-03 20:38:57  No: 142323

Excelが既に起動している場合には、'???の部分にどうすれば
良いのでしょうか?起動しているExcelでブックを開きたいのです。
新しいExcelは起動したくないです。
Excelが起動していない場合は、以下で良好です。

Private Sub Command1_Click()
    Call Excel_exe("c:\test.xls", "macro1", exe_err)
End Sub

Private Sub Excel_exe(ByVal file_pn As String, ByVal exe_mn As String, ByVal exe_err As Boolean)
        Dim xlApp    As Excel.Application
        Dim xlbook   As Excel.Workbook
        Dim xlSheet  As Excel.Worksheet
        On Error GoTo Er1
        If Excel_Chk = True Then
                '???
            Else
                Set xlApp = CreateObject("Excel.Application")
                xlApp.Visible = True
                ' 指定したExcelファイルを開く
                Set xlbook = xlApp.Workbooks.Open(file_pn)
                xlApp.Run (exe_mn)
        End If
        ' オブジェクトを解放
        Set xlSheet = Nothing
        Set xlbook = Nothing
        Set xlApp = Nothing
        exe_err = False
        Exit Sub
Er1:
        ' エラーメッセージを表示
        exe_err = True
    End Sub

Private Function Excel_Chk()
    Dim xlApp As Object
        On Error Resume Next
        Set xlApp = GetObject(, "Excel.Application")
        If xlApp Is Nothing Then
            Excel_Chk = False
            MsgBox ("Excelは起動してません")
        Else
            Excel_Chk = True
            MsgBox ("Excelは起動してます")
        End If
        Set xlApp = Nothing
End Function


魔界の仮面弁士  2009-08-04 08:17:36  No: 142324

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200907/09070041.txt
の続きでしょうか?

> Excelが既に起動している場合には、'???の部分にどうすれば
> 良いのでしょうか?
この場合そもそも、Excel_Chk() 関数を作る意味は無いと思いますよ。

> 起動しているExcelでブックを開きたいのです。
GetObject できれば、その Excel.Application オブジェクトをそのまま使い、
GetObject できなければ、Excel.Application を CreateObject して使いましょう。

> xlApp.Run (exe_mn)
括弧は不要です。この場合は
  xlApp.Run exe_mn
と記述しましょう。


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

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






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