Vba 打开其他工作簿后保持在活动工作簿中

Vba 打开其他工作簿后保持在活动工作簿中,vba,excel,Vba,Excel,我正试图打开另外两个Excel工作簿,通过宏获取数据进行计算。我有一个工作代码来打开这些文件 Dim wbCount As Integer Application.ScreenUpdating = False For wbCount = 1 To 2 Workbooks.Open Filename:=ThisWorkbook.Path & "\Installation Sheet " & wbCount & ".xlsm", UpdateLinks:=False Next

我正试图打开另外两个Excel工作簿,通过宏获取数据进行计算。我有一个工作代码来打开这些文件

Dim wbCount As Integer
Application.ScreenUpdating = False
For wbCount = 1 To 2
Workbooks.Open Filename:=ThisWorkbook.Path & "\Installation Sheet " & wbCount & ".xlsm", UpdateLinks:=False
Next wbCount
ThisWorkbook.Activate
Application.ScreenUpdating = True

其他文件名为“安装表1”和“安装表2”。此代码运行后,我最终显示的是“安装表1”,而不是我的活动工作簿。

将您的
ActiveWorkbook
放入适当位置的变量中,然后使用该变量向后移动<代码>此工作簿是包含代码的工作簿。因此,请确保您的意思是
ActiveWorkbook
thiswoolk
,或者
thiswoolk
是当时的
ActiveWorkbook
。在这种情况下,您只需
Set wb=thiswoolk

Dim wb As Workbook
Set wb = ActiveWorkbook
'Set wb = ThisWorkbook   '<== If you want the workbook containing the code
'Other code
wb.Activate
Dim wb As工作簿
设置wb=ActiveWorkbook

“Set wb=ThisWorkbook”您必须将工作簿引用放入变量中,然后使用这些变量,您有两个选项:关闭新打开的工作簿,使原始工作簿保持打开状态,或使用
Activate
方法将原始工作簿置于前面

示例代码:

Sub OpeningWb()
    Dim wb As Workbook, currentWb As Workbook
    Set currentWb = ThisWorkbook
    Set wb = Workbooks.Open("your path here")
    ' if you want to close opened workbook
    'wb.Close
    ' if you want to bring to front original workbook
    currentWb.Activate
End Sub
或者,您可以执行以下操作:

Dim wbToDisplay As Workbook
Set wbToDisdplay = Workbooks("workbook name here")
wbToDisplay.Activate

上述解决方案对我不起作用,因为activate方法是在显示第二个工作簿之前启动的,所以我始终激活第二个工作簿。我的解决方法是在调用Activate方法之前等待几秒钟:

Dim t: t = Timer
While Timer < t + 2 'wait for 2 seconds
    DoEvents
Wend
ThisWorkbook.Activate
Dim t:t=计时器
当定时器
非常感谢您的建议。我尝试了你的解决方案,但仍然得到同样的结果。这是更新后的代码@QHarrIs是否在工作簿的前端和末尾添加了所需的代码?是的。我需要将编写此宏的工作簿放在前面。设置wb=ThisWorkbook。在循环结束后,将wb.Activate放在前面。很高兴能提供帮助。感谢您抽出时间。我试过你的建议,但结果还是一样。下面是修改后的代码:@Michal Turczyn您原来的解决方案现在正在工作,但在我删除SreenUpdate语句之后。你能告诉我原因吗。我关闭了屏幕更新,因为我不希望我的屏幕闪烁。@ShashankBanerjee它不会影响我计算机上的行为。如果我使用
ScreenUpdate=False
它仍然可以正常工作。Turczyn非常感谢您的回复。我将对此进行更多的研究。谢谢你的帮助:)@ShashankBanerjee如果我的回答对你有帮助,你应该接受它,并有选择地投票。