【问题标题】:VBA paste from Excel to Word ends sub从 Excel 到 Word 的 VBA 粘贴结束子
【发布时间】:2014-02-27 10:56:24
【问题描述】:

总体目标是在 Excel 中采用 RTF 格式的文本并将其转换为 HTML。到目前为止,我一直无法让 Excel 以合理的方式做出响应,因此尝试使用 Word。我能够毫无问题地在 Word 中进行转换,因此希望通过将单元格复制到 Excel 中,粘贴到 Word 中,然后运行代码将格式转换为我想要的方式来自动化该过程。

我遇到了一个问题,当我从 Excel VBA 粘贴到 Word 时,粘贴成功,但随后跳转到 End Sub

Sub webtext(r As String)
    Range(r).Copy
    Dim wordApp As Word.Application
    Dim wordDoc As Word.Document
    Set wordApp = CreateObject("word.Application")
    Set wordDoc = wordApp.Documents.Add
    wordApp.Visible = True
    wordApp.Activate

    wordApp.Selection.PasteSpecial

    'Any code here is missed out
    z = MsgBox("tada") 'this will never trigger
    x=5 'this will never set
    With wordDoc
        'Operations on the text pasted would happen here
        'but vba never gets here.
    End With

'Code jumps to here
End Sub

我尝试过同时使用 wordDoc 和 wordApp,以及 paste 和 pastespecial,但结果总是相同。

有没有人知道这里发生了什么或如何阻止它总是在粘贴后结束。

编辑:我已经对此进行了测试,它适用于 Office 2010。它不适用于 Office 2013。

【问题讨论】:

  • 您在 Excel 中运行 webtext,对吗?当代码跳转End Sub时,你的任务完成了吗?我不得不承认我在这里很难理解你的问题
  • 我添加了几个“测试”点来说明问题发生在哪里以及由此产生的后果(即:粘贴后我无法再运行任何代码)。粘贴本身是成功的。

标签: excel ms-word office-2013 vba


【解决方案1】:

对我来说效果很好

但建议您尝试这些调整,看看是否可行(AppActivate 是多余的)。

Sub StartIt()
Call webtext("a1:a10")
End Sub

主要

Sub webtext(r As String)
    Range(r).Copy
    Dim wordApp As Word.Application
    Dim wordDoc As Word.Document
    Set wordApp = New Word.Application
    Set wordDoc = wordApp.Documents.Add
    wordApp.Visible = True

    With wordDoc
    .ActiveWindow.Selection.Paste
    End With

End Sub

【讨论】:

  • 我的调用函数是相同的:Sub wt() Call webtext("B4") End Sub 我添加了 ActiveWindow 代码,它仍然跳转到 End Sub。我还尝试将其添加到With wordDoc 部分,并在成功粘贴后直接跳出。
  • 您使用的是 Office 2013 吗?我刚刚在 2010 年尝试过这个,结果我认为这可能是 2013 年的事情。
  • 有趣的是刚刚在新工作表中再次尝试了这个,现在它也对我有用。
【解决方案2】:

似乎解决了。 VBA 调试器在到达 WordApp 部分后无法理解发生了什么,因此代码出现 跳转到该部分的末尾。

此外,似乎任何单词更改都应该在 With wordDoc 部分中完成,因为有时在两者之间正确地点击代码可能有点奇怪(尽管从未弄清楚为什么第一次会丢失消息框)。

感谢 @brettdj 在测试方面的帮助,并为我在理解发生的事情时的错误道歉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多