【问题标题】:Navigate to blank page in IE with Excel使用 Excel 导航到 IE 中的空白页
【发布时间】:2016-11-08 21:00:00
【问题描述】:

我在 Excel 中有一段 VBA 代码,它获取写入纯 HTML 文本的单元格,将该 HTML 带到 IE,然后将其粘贴回单元格中没有 HTML 标记的格式化文本。我在这里选择了代码:HTML Text with tags to formatted text in an Excel cell

与我链接的那个问题相反,我必须为很多单元格执行此操作,所以我想加快一点速度。由于CreateObject("InternetExplorer.Application") 需要很长时间来处理,所以我尝试多次使用同一个对象,但第二次遇到.Navigate "about:blank" 时它就失败了。

代码如下:

Sub ConvertHTMLrecu()
    Dim Ie As Object
    Dim rng As Range, rng2 As Range
    Dim i As Integer
    Dim iChr As Integer

    i = 1
    Set Ie = CreateObject("InternetExplorer.Application")

    For i = 1 To 40
        Set rng = Feuil3.Range("A" & i)
        Set rng2 = Feuil3.Range("C" & i)

        With Ie
            .Visible = False

            .Navigate "about:blank"

            .Document.body.InnerHTML = rng.Value

            .ExecWB 17, 0
            .ExecWB 12, 2

            ActiveSheet.Paste Destination:=rng2

            .Quit
        End With
    Next i

End Sub

我需要什么

我想要两件事中的一件。要么找到再次导航到空白页面的方法,以便我可以再次运行宏而无需重置对象,要么找到更好的方法在 Excel 中格式化 HTML 文本(因为这就是这个宏所做的一切)。

【问题讨论】:

    标签: vba excel internet-explorer


    【解决方案1】:

    您在第一个循环中退出 Ie 对象并尝试在第二个循环中访问相同的对象,因此出现错误。

    只需从循环中删除 .quit 并将以下行放在最后一行 End Sub 之前:

    Ie.quit
    Set Ie = Nothing
    

    【讨论】:

    • 您的回答很好,但我仍然想说它在循环中根本无法正常工作。它会引发间歇性错误,并且会产生因执行而异的混合结果。宏的创建者(链接)警告说该方法容易出现运行时错误......
    • 好吧,我尝试了一些虚拟数据,效果很好。我的回答也完全与你的问题有关。如果你能添加一些测试数据,我可以看看。
    • 我设法让它正常工作,但每个需要转换的单元格大约需要 1/3 秒。所以你的答案很好,只是执行速度很差。
    猜你喜欢
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2011-07-21
    相关资源
    最近更新 更多