0

Microsoft Excel アプリケーションが開いているかどうかを確認するために、次の手順を作成しました。この手順は正常に機能しますが、ワークブックを開いてシートをアクティブ化すると、Excel の 2 番目のインスタンスが開こうとします。

これが私のコードです:

Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlWBName As String = "2011.1004.Compensation Template"

For Each p As System.Diagnostics.Process In System.Diagnostics.Process.GetProcesses()
    If p.ProcessName <> "EXCEL" Then
        xlApp.Visible = True
        xlBook = xlApp.Workbooks.Open("F:\Test Environment\Compensation Workbook\Compensation Workbook\bin\Debug\" & xlWBName & ".xlsx")
        Dim xlSheet As Excel.Worksheet
        xlSheet = CType(xlBook.Sheets("SummaryWorksheet"), Worksheet)

        xlSheet.Activate()
    End If
Next
4

1 に答える 1

3

メソッドを使用してGetObject、既に開いている Application オブジェクトを見つけます。

http://msdn.microsoft.com/en-us/library/e9waz863(v=vs.90).aspx

    Dim xlApp As Excel.Application

    Try
        'get an existing excel.application object
        xlApp = GetObject(, "Excel.Application")
    Catch ex As Exception
        'no existing excel.application object - create a new one
        xlApp = New Excel.Application
    End Try

    Dim xlBook As Excel.Workbook
    Dim xlWBName As String = "2011.1004.Compensation Template"


    xlApp.Visible = True
    xlBook = xlApp.Workbooks.Open("F:\Test Environment\Compensation Workbook\Compensation Workbook\bin\Debug\" & xlWBName & ".xlsx")
    Dim xlSheet As Excel.Worksheet
    xlSheet = CType(xlBook.Sheets("SummaryWorksheet"), Worksheet)

    xlSheet.Activate()
于 2013-09-10T16:33:56.823 に答える