首页 文章

使用VBA打开Excel工作簿时如何使打开的工作簿成为活动窗口?

提问于
浏览
1

我正在使用一个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 回答

  • 1

    试一试:

    wb.activate
    

    适合我

  • 0

    尝试将其添加到VBA脚本的末尾:

    Application.SendKeys(“%”)

    它将尝试使用Alt-Tab切换窗口,然后希望这将解决您的问题 .

相关问题