[英]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.