我正在使用一个调用第二个表单的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
&#34;工作簿(wb).Activate&#34;和&#34; Activewindow.visible = True&#34;命令试图将新工作簿窗口设置为活动窗口。据我所知,这不会发生在Office 2013中,但可能是Office 2016特有的。
答案 0 :(得分:1)
试试:
wb.activate
为我工作
答案 1 :(得分:0)
尝试将其添加到VBA脚本的末尾:
Application.SendKeys ("%{TAB}")
它会尝试使用Alt-Tab切换窗口,然后希望这将解决您的问题。