打开其他工作簿后留在活动工作簿中

时间:2018-08-25 09:21:58

标签: excel vba excel-vba

我正在尝试打开其他两个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”,而不是活动的工作簿。

3 个答案:

答案 0 :(得分:2)

<h1>{{title}}</h1> <ul> <li class="text" *ngFor="let item of items | async"> {{item.name}} </li> </ul> 放在适当位置的变量中,然后使用该变量返回。 export const environment = { production: false, firebase: { apiKey: '...', authDomain: '...', databaseURL: '...', projectId: '...', storageBucket: '...', messagingSenderId: '...' } }; 是带有代码的代码。因此,请确保您是指ActiveWorkbookThisWorkbook,还是当时ActiveWorkbookThisWorkbook。在这种情况下,您只需ThisWorkbook

ActiveWorkbook

答案 1 :(得分:1)

您必须将工作簿引用放入变量中,然后使用这些变量有两个选择:关闭新打开的工作簿,以便仅保持原始打开状态,或使用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

答案 2 :(得分:0)

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

Dim t: t = Timer
While Timer < t + 2 'wait for 2 seconds
    DoEvents
Wend
ThisWorkbook.Activate