多年来-在Office2013中-我们/正在使用带有Web浏览器控件(参考Microsoft Internet控件)的多个用户表单,以在用户表单中显示pdf文档。
自从我们迁移到Office2019之后,Web浏览器就显示在用户窗体的外部,并放在用户窗体的父窗口(即Outlook或Excel)的后面。当从功能区上的按钮激活宏时,会发生这种情况。
但是,当使用F5从VBE运行用户窗体(直接从窗体或通过加载/显示窗体的模块中的宏)运行时,它的工作原理与预期的一样。
有人知道在哪里解决这个问题吗?
用户表单中用于显示pdf文件的代码
Me.WebBrowser1.Navigate URL:="D:\file.pdf"
模块中用于显示用户表单的代码
Sub MacroName()
Load Userform
Userform.Show
End Sub
答案 0 :(得分:0)
您可以尝试为用户表单实例设置父窗口。 SetParent更改指定子窗口的父窗口。
Function SetFormParent(UF As MSForms.UserForm, _
Parent As FORM_PARENT_WINDOW_TYPE) As Boolean
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' SetFormParent
' Set the UserForm UF as a child of (1) the Application, (2) the
' Excel ActiveWindow, or (3) no parent. Returns TRUE if successful
' or FALSE if unsuccessful.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim UFHWnd As Long
Dim WindHWnd As Long
Dim R As Long
UFHWnd = HWndOfUserForm(UF)
If UFHWnd = 0 Then
SetFormParent = False
Exit Function
End If
Select Case Parent
Case FORM_PARENT_APPLICATION
R = SetParent(UFHWnd, Application.hwnd)
Case FORM_PARENT_NONE
R = SetParent(UFHWnd, 0&)
Case FORM_PARENT_WINDOW
If Application.ActiveWindow Is Nothing Then
SetFormParent = False
Exit Function
End If
WindHWnd = WindowHWnd(Application.ActiveWindow)
If WindHWnd = 0 Then
SetFormParent = False
Exit Function
End If
R = SetParent(UFHWnd, WindHWnd)
Case Else
SetFormParent = False
Exit Function
End Select
SetFormParent = (R <> 0)
End Function
答案 1 :(得分:0)
我在Office 365的Outlook中使用VBA遇到了同样的问题。 不知道这是否适合您,但我的问题已通过转到Outlook选项>常规得到解决。然后在“用户界面选项”下的“使用多个显示器时”设置下,选择“优化兼容性”选项
然后重新启动Outlook。同样的选项也应该在Excel中可用。尝试看看是否可行。它为我工作。我希望它也对您有用。