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
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
と記述しましょう。
ツイート | ![]() |