首页 > 解决方案 > 初始化时包含 WebBrowsers 的 Excel vba 用户表单关闭 excel 而没有错误消息,并恢复文件。为什么?

问题描述

这适用于我的普通笔记本电脑 16Gb ram 和 excel office 365,但是当我使用带 4Gb ram 和 excel office 365 的平板电脑时。当我初始化包含两个网络浏览器的特定用户表单时,它会导致 excel 崩溃,我没有收到任何错误消息,它看起来像是在考虑它,然后 excel 只是关闭并使用恢复的版本重新打开。我所有的其他代码都可以正常工作。

这在我的 16Gb ram 笔记本电脑上可以正常工作,windows 和 excel 的版本是相同的,唯一的区别是 4Gb。我原以为它只需要更长的时间,因为内存的差异,这是内存问题吗?

当我取消以下行时,用户表单加载正常(显然没有导航到网页)

Me.WebBrowser1.Silent = True

Me.WebBrowser1.Navigate "https://www.nutracheck.co.uk/CaloriesIn/"

Me.WebBrowser2.Navigate "about:blank"

Me.WebBrowser2.Document.Write "<img style=""width:100%;""

src=""https://media.giphy.com/media/MIY4jpusckRmU/giphy.gif"">"

WebBrowser2.Document.Body.Style.Border = "none"

WebBrowser2.Document.Body.Scroll = "no"*

Private Sub UserForm_Initialize()

With Application
' here I have code to format and position labels and command buttons on 
'userform according to screen size
End With


'next line suppresses script errors in the web browser window
Me.WebBrowser1.Silent = True

Me.WebBrowser1.Navigate "https://www.nutracheck.co.uk/CaloriesIn/"

Me.WebBrowser2.Navigate "about:blank"
Me.WebBrowser2.Document.Write "<img style=""width:100%;""
src=""https://media.giphy.com/media/MIY4jpusckRmU/giphy.gif"">"

With Application
WebBrowser1.Top = .Top + 40
WebBrowser1.Left = AddARecipe.Left + (AddARecipe.Width * 0.48)
WebBrowser1.Height = .Height - 40
WebBrowser1.Width = AddARecipe.Width * 0.5

End With

With Application
WebBrowser2.Top = .Top + 60
WebBrowser2.Left = 0 '10
WebBrowser2.Height = (AddARecipe.Width * 0.243) 
WebBrowser2.Width = (AddARecipe.Width * 0.45) 
WebBrowser2.Visible = False
WebBrowser2.Document.Body.Style.Border = "none"
WebBrowser2.Document.Body.Scroll = "no"

End With

End Sub

当代码未更改地运行时,我单步执行代码时没有出现错误消息,它就在“结束子”处关闭。

标签: excelvbawebbrowser-controluserform

解决方案


推荐阅读