我正在使用一个xlsm文件表单调用第二个表单来要求用户选择要打开的工作簿 . 然后,VBA代码将打开该工作文件 . 但是,我发现在Office 2016中,该文件在原始xlsm文件后面打开 . 也就是说,它不会成为活动窗口 . 我可以使用Alt Tab转到打开的文件,但是在我按Alt Tab激活原始xlsm文件之前,该文件不会与我的击键或鼠标点击交互 . 然后,当我响应VBA打开的文件时,我可以与它进行交互 . 也就是说,VBA打开的文件在我使用具有VBA代码的工作文件触及后退之前不会变为活动状态 . 我已经尝试了一系列的activeworkbooks,application.activewindow命令来激活打开的工作簿无济于事 .
这是我正在使用的代码:
Private Sub btn_select_Click()
' User clicks on select. If a subcategory is selected open the file and stop program. If not repopulate sub-category
If IsNull(lst_subcategories) Or lst_subcategories = "" Then
lst_subcategories.Clear
Call populate_data
Else ' open file and unload form (End)
If lst_datacategories <> "Tourism" Then
str_filetoopen = "I:\Bureau-Work\Data System\" & lst_datacategories & "\" & lst_subcategories & ".xlsx" ' May need to be F: drive
Else
str_filetoopen = "I:\Bureau-Work\Data System\" & lst_subcategories & "\" & lst_subcategories & ".xlsx" ' May need to be F: drive
End If
On Error Resume Next ' drive or file may not be available. If so error and retain from
Set wb = Workbooks.Open(str_filetoopen)
If wb Is Nothing Then
MsgBox "I: Drive or Retrieve File is Not Accessible"
GoTo handle ' retains frm_editData
End If
Workbooks(wb).Activate
ActiveWindow.Visible = True
End 'exit all macros and forms once successfully loading file
End If
handle:
End Sub
“Workbooks(wb).Activate”和“Activewindow.visible = True”命令试图将新工作簿窗口设置为活动窗口 . 据我所知,这不会发生在Office 2013中,但可能是Office 2016特有的 .
2 回答
试一试:
适合我
尝试将其添加到VBA脚本的末尾:
它将尝试使用Alt-Tab切换窗口,然后希望这将解决您的问题 .