Vba 如何在不同的实例中显示excel中的所有工作簿?

Vba 如何在不同的实例中显示excel中的所有工作簿?,vba,Vba,我正在尝试获取当前打开的所有工作簿的名称。我现在有 Dim wb1 As Workbook Set wb1 = ThisWorkbook 'wb where macro is wb1_name = wb1.Name For Each WB In Application.Workbooks wb2_name = WB.Name If wb2_name <> wb1_name Then WB.Activate

我正在尝试获取当前打开的所有工作簿的名称。我现在有

    Dim wb1 As Workbook
    Set wb1 = ThisWorkbook 'wb where macro is
    wb1_name = wb1.Name
    For Each WB In Application.Workbooks
    wb2_name = WB.Name
        If wb2_name <> wb1_name Then
        WB.Activate
        Range("H1").Value = "hello"

        End If
    Next WB

    End Sub
Dim wb1作为工作簿
设置wb1=此工作簿的wb,其中宏为
wb1_name=wb1.name
对于应用程序中的每个WB。工作簿
wb2_name=WB.name
如果wb2_名称wb1_名称,则
WB.激活
范围(“H1”).Value=“你好”
如果结束
下一个WB
端接头

它无法拾取循环中打开的其他工作簿。它只循环一次,即将当前工作簿与自身进行比较,因此不执行任何操作。这可能是因为我有一些代码可以从软件中检索数据,下载并打开excel文件。我怀疑这个文件在下载和打开时是Excel的另一个实例,因为我在屏幕上清楚地看到了它

Excel的不同实例无法相互通信,但在同一实例中打开的多个工作簿可以轻松地相互“对话”

如果选择多个Excel文件并按Enter键,则它们都在同一实例中运行。如果这描述了您的场景,那么您可以通过运行下面的代码轻松列出所有工作簿以及所有工作表

Sub ListWorkbooks()
    Dim Rng As Range
    Dim WorkRng As Range
    On Error Resume Next

    Set WorkRng = Application.Selection
    Set WorkRng = Application.InputBox("Out put to (single cell)", xTitleId, WorkRng.Address, Type:=8)
    Set WorkRng = WorkRng.Range("A1")
    xNum1 = Application.Workbooks.Count
    For i = 1 To xNum1
        xNum2 = Application.Workbooks(i).Sheets.Count
        WorkRng.Offset(i - 1, 0).Value = Application.Workbooks(i).Name
        For j = 1 To xNum2
            WorkRng.Offset(i - 1, j).Value = Application.Workbooks(i).Sheets(j).Name
        Next
    Next
End Sub

你把工作表和工作簿搞混了吗?不同的实例彼此之间不说话,至少不是“正常”的方式(无论如何也不是凡人都能接触到的方式)<代码>应用程序指当前运行代码的实例。这两个实例需要跨越流程边界,以便彼此“交谈”。你要求的任务可不小。或者下载的工作簿只是在同一实例中以“受保护模式”打开?Excel的哪个版本?我指的是工作簿。我正在两个excel工作簿之间导航。最初,工作簿只包含代码。该代码将打开其他工作簿,在其中进行数据的计算和操作。我怀疑当新工作簿打开时,它位于不同的excel实例中,因为当我在工作簿中循环时,它只拾取宏所在的工作簿,而不是它打开的工作簿。版本为Excel 2010如果代码正在打开另一个工作簿,则该工作簿位于同一实例中。