簡體   English   中英

從 Access 將變量分配給打開的 Excel 工作簿

[英]Assign a variable to an opened Excel workbook from Access

我正在使用 VBA 開發 Access 數據庫,該數據庫需要從 Excel 工作簿中獲取數據。

我需要為打開的書分配一個變量(設置 g_xl =????)而不打開另一個 Excel 實例(指定打開的工作簿)。

Sub AssignVariableToExcelApplication()
    Dim g_xl As Excel.Application
    Dim strComputer As String
    Dim objWMIService As Object
    Dim colitems As Object
    Dim objitem As Object

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set colitems = objWMIService.ExecQuery("SELECT * FROM Win32_Process", , 48)

    Dim row As Integer
    row = 1
    For Each objitem In colitems
        If objitem.Name = "EXCEL.EXE" Then
            Debug.Print objitem.ProcessID & vbCrLf & _
                        objitem.Name & vbCrLf & _
                        objitem.Caption & vbCrLf & _
                        objitem.CommandLine & vbCrLf & _
                        objitem.ExecutablePath

            'This is the question
            'Set g_xl = objitem ?????? (I need that g_xl appoints to objitem)
            Exit For
        End If
    Next
End Sub

您不需要任何這些,只需要 Excel 文件的完整路徑。 然后GetObject()可以獲得對打開的工作簿的引用。

sPath = "C:\my\path\myWorkbook.xlsx"
Set wb = GetObject(sPath)
' Demo
Debug.Print wb.Sheets(1).Cells(1,1).Value
' If you need the Application
Set g_xl = wb.Application

如果文件未打開,這只會啟動一個新的 Excel 實例。

使用 g_xl 作為類型Excel.Application ,注釋行將是

Set g_xl = CreateObject("Excel.Application")

或者

Set g_xl = GetObject("Excel.Application")

后者將與現有的Excel.Application掛鈎,這就是我認為您正在嘗試做的事情。 如果找不到現有實例,它將創建一個新實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM