【问题标题】:Activate worksheet after opening multiple password protected workbooks打开多个受密码保护的工作簿后激活工作表
【发布时间】:2019-12-05 03:32:12
【问题描述】:

我有一些代码可以打开多个受密码保护的工作簿。在代码的末尾,我试图重新激活主工作簿中的工作表。但是,它不会重新激活。可能是由于打开过程需要更长的时间才能运行子?有什么建议吗?

我已尝试关闭事件。还尝试了等待功能。

Public Sub OpenFiles()

Dim mainwb As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim numClients
Dim pw As String
Dim i As Integer
Dim newHour As Variant
Dim newMinute As Variant
Dim newSecond As Variant
Dim waitTime As Variant

Set mainwb = ThisWorkbook

myPath = mainwb.Sheets("Dashboard").Range("C1")
myExtension = ".xlsx"
numClients = mainwb.Sheets("Dashboard").Range("I1")

'Optimize Macro Speed
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlCalculationManual

For i = 4 To numClients

    myFile = ThisWorkbook.Sheets("Dashboard").Range("A" & i).Value
    pw = ThisWorkbook.Sheets("Dashboard").Range("B" & i).Value
    Workbooks.Open Filename:=myPath & myFile & myExtension, Password:=pw

    DoEvents

Next i

    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic

ThisWorkbook.Worksheets("Dashboard").Activate

End Sub

激活的工作表是上次打开的工作簿上的工作表。

【问题讨论】:

  • 而不是使用Thisworkbook 按名称调用工作簿,这样它就知道要激活哪个。这只是使用当前处于活动状态的任何一个并转到该选项卡。

标签: excel vba


【解决方案1】:

我修改了您的代码以激活特定工作簿,但您需要输入工作簿名称。

Dim mainwb As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim numClients
Dim pw As String
Dim i As Integer
Dim newHour As Variant
Dim newMinute As Variant
Dim newSecond As Variant
Dim waitTime As Variant

Set mainwb = ThisWorkbook

myPath = mainwb.Sheets("Dashboard").Range("C1")
myExtension = ".xlsx"
numClients = mainwb.Sheets("Dashboard").Range("I1")

'Optimize Macro Speed
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlCalculationManual

For i = 4 To numClients

    myFile = ThisWorkbook.Sheets("Dashboard").Range("A" & i).Value
    pw = ThisWorkbook.Sheets("Dashboard").Range("B" & i).Value
    Workbooks.Open Filename:=myPath & myFile & myExtension, Password:=pw

    DoEvents

Next i

    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic

 Workbooks("YourWorkbookName.xlsx").Activate 'Put your workbook name here. can add worksheet as well

End Sub````

【讨论】:

  • 感谢您的帮助,但仍然存在同样的问题。
  • 我做到了。我有Workbooks("Master XXXX.xlsm").Worksheets("Dashboard").Activate
  • 我认为原因是您怀疑发生了很多事情,并且代码仍在打开工作表或基本上超出激活正确工作表的行。只是一个猜测,我会研究一些确保它在进入下一步之前完成的东西。像Do DoEvents Loop While Not Application.CalculationState = xlDone 或类似的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-16
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
相关资源
最近更新 更多