VBA从打开的Excel应用程序切换到其他打开的Excel应用程序

toiithl6  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(331)

我使用VBA Excel 2010,它允许Excel应用程序的多个示例同时打开。我需要从工作簿2导入数据(它在不同的Excel应用程序中打开),到当前Excel应用程序中的workbook1中。我发现APPACTIVATE会确定workbook2实际上是否打开,即使在不同的Excel应用程序中。如果当前未打开,这很简单...我只是在当前Excel应用程序中打开workbook2,获取我的数据,更新workbook1,然后关闭workbook2。但是如果workbook2已经打开,我需要切换到workbook2应用程序,获取我的数据,更新workbook1,并保持workbook2不变。我可以访问workbook2应用程序吗?

Sub AppAct()

    'Workbook (1): workbook.name="Book1"
    'Workbook (2): workbook.name="Fuel2010I.xlsm"
    'Workbook (2): workbook.fullname="C:\FltTools\Fuel2010I.xlsm"
    'Sheets("FL") exists in Workbook (2)
    'Sheets("S") exists in Workbook (1)
    
    On Error Resume Next
    AppActivate ("FUEL2010I.xlsm")
    If Err.Number > 0 Then 'if workbook not already open, then open it and select sheet "FL"
        On Error GoTo 0
        Workbooks.Open Filename:="C:\FltTools\Fuel2010I.xlsm"
        Sheets("FL").Select 'works fine
    Else 'if the workbook is open, select sheet "FL"
        On Error GoTo 0
        Sheets("FL").Select 'Subscript out of range, I'm not talking with FUEL2010I.xlsm
    End If
    Sheets("S").select
End Sub

我已经尝试了上面的代码。代码没有切换到Excel的workbook2示例

ohtdti5x

ohtdti5x1#

使用AppActivate切换Excel示例

  • 在应用程序激活后,您需要激活窗口,如以下代码所示。
    快速修复
Sub AppAct()
    
    Dim ErrNumber As Long

    On Error Resume Next
        AppActivate "FUEL2010I.xlsm"
        ErrNumber = Err.Number
    On Error GoTo 0
    
    If ErrNumber > 0 Then ' workbook is not open in another instance
        Workbooks.Open Filename:="C:\FltTools\Fuel2010I.xlsm"
    Else ' workbook is open in another instance
        Windows("FUEL2010I.xlsm").Activate
    End If

    Sheets("FL").Select
    Sheets("S").Select

End Sub

相关问题