引用另一个在单独窗口中打开的工作簿的方法是什么



>我可以使用两种方法在单独的窗口中打开另一个工作簿

TheEmu_Path = "excel.exe " & ThisWorkbook.Path & "" & "myexcel.xlsx" 
call Shell(TheEmu_Path, 3)

Set oExcel = New Excel.Application
oExcel.Workbooks.Open Filename:=TheEmu_Path & "myexcel.xlsx"

我可以打开但不知道如何为打开的工作簿设置引用的第一种方法打开工作簿时我可以引用的第二个,但后来对于任何以后的过程,我不知道如何引用该单独打开的工作表

Set oExcel = ??
Set oWB = oExcel.Workbooks("myexcel.xlsx")
Set oWS = oWB.Sheets("F1")

如何设置 oExcel(已单独打开的工作簿(的引用?

创建并打开后,稍后我想在新按钮命令中更改该单独打开工作簿中的值

Set oExcel = CreateObject("Excel.Application")
Set oWB = oExcel.Workbooks("myexcel.xlsx")
Set oWS = oWB.Sheets("1")
oWS.Cells(1, 1) = 55

我在第二行有一个错误,因为我相信我仍然没有正确引用 oExcel。


评论大卫修订

令人印象深刻,非常感谢。

它只需很少添加即可完美运行,oExcel 将直接被视为工作簿 - 太好了!

Dim oExcel As Object 'or Dim oExcel As Workbook
Dim oWS As Excel.Worksheet 'or Dim oWS As Worksheet
Set oExcel = GetObject(ThisWorkbook.Path & "" & "myexcel.xlsx").Application
'or Set oExcel = GetObject(ThisWorkbook.Path & "" & "myexcel.xlsx")
Set oWS = oExcel.Sheets("1")
oWS.Cells(1, 1) = 4

提出其他问题令人兴奋和鼓舞,因为我在使用导致 #na 值的 UpdateRemoteReferences 时文件崩溃。

创建一个新的 Excel 实例:

Dim oExcel as Excel.Application 'or As New Excel.Application
Set oExcel = New Excel.Application
'Dim oExcel as Object
'Set oExcel = CreateObject("Excel.Application") 'Alternative method for late-binding

当我这样做时,将打开一个新的Excel,并且有一个空白的工作簿文件。 引用此工作簿:

Dim oWB as Workbook
Set oWB = oExcel.Workbooks(1)

要在此实例中打开文件,请执行以下操作:

Dim anotherWB as Workbook
Set anotherWB = oExcel.Workbooks.Open("c:test.xlsx")

等。

虽然我通常不建议使用应用程序的多个实例,但我只是没有任何用处,我只是在Excel.Application的一个实例中打开所有工作簿。

根据评论请求更新

根据上面的示例,控制多个实例 IMO 的最简单方法是从头开始并创建新对象,在运行时控制它们。

如果无法做到这一点,仍然可以获取另一个实例。 在这两种情况下,我认为您都需要知道Excel的另一个实例中打开的工作簿文件的名称。

容易

如果您知道工作簿名称,则可以获得如下访问权限:

Dim oExcel As Object ' or Excel.Application
Set oExcel = GetObject("Workbook_Name.xlsx").Application

然后,您可以使用普通方法引用工作簿,只要您有资格使用oExcel,例如:

Dim otherWorkbook as Workbook
Set otherWorkbook = oExcel.Workbooks(1) 'or oExcel.Workbooks("Workbook_Name.xlsx")

困难,可能更通用

另一种选择是使用 WinAPI 函数来获取窗口句柄。 我以前使用过 WinAPI 做过这样的事情,虽然我没有测试下面的示例代码,但它应该是一个很好的起点。

http://excelribbon.tips.net/T009452_Finding_Other_Instances_of_Excel_in_a_Macro.html

相关内容

最新更新