【问题标题】:Can't use 'Selection.TypeText' method when writing to Word document from Excel VBA从 Excel VBA 写入 Word 文档时无法使用“Selection.TypeText”方法
【发布时间】:2014-02-05 06:35:59
【问题描述】:

我正在尝试从 Excel VBA 写入 Word 文档,当我尝试在 Selection 对象上使用 .TypeText 方法时,我收到错误消息:“对象不支持此属性或方法。”

我在某处读到 Excel VBA 不知道我指的是 Word 文档中的 Selection 对象,因此我尝试了建议的解决方案,即尝试在 With - @ 987654324@ 块。

基本上我试过这个:

Set WrdApp = New Word.Application
Set DestDoc = WrdApp.Documents.Add
With DestDoc
   .Activate
   .Select
   .Selection.TypeText Text:="Test"
End With    

但它总是在.Selection.TypeText 行报告相同的错误。

任何帮助将不胜感激。

【问题讨论】:

    标签: vba excel ms-word


    【解决方案1】:

    试试这个:

    Sub WriteToWord()
    
    Dim WrdApp As New Word.Application
    Dim WrdDoc As Document
    Dim WrdSel As Selection
    
    WrdApp.Visible = True
    Set WrdDoc = WrdApp.Documents.Add
    Set WrdSel = WrdApp.Selection
    
    WrdSel.TypeText "Test"
    
    End Sub
    

    您的代码非常接近。您遇到的错误是DestDoc 没有.Selection 属性。你可以在外面做。但是,您的风格不是最佳实践,因此请参考我上面的风格,以便您可以准确识别出哪个是什么。 :)

    让我们知道这是否有帮助。

    【讨论】:

    • 太棒了!谢谢@BK201!
    • 还有一件事@BK201... 你让我意识到我的主要错误是什么。我直观地做的是Set WrdSel=WrdDoc.Selection 期望WrdDoc 是由Set WrdDoc=WrdApp.Documents.Add 生成的文档对象,并且我应该将WrdSel 对象定义为WrdDoc 对象中的一个元素。不过我还是有点困惑,因为我真的不明白为什么.Selection 属性适用于WrdApp 而不是WrdDoc——我想我不太明白'WrdApp' 和@ 之间的区别987654332@,或者更准确地说,我不明白WrdApp对象的本质。
    • 一个提示:不要认为 Word VBA 的行为就像 Excel VBA。在 Excel 中,创建Application --> Workbook --> Worksheet 流并在您想要输入内容时在工作表上工作很容易。在 Word 中,它实际上并不是这样工作的。 Document 属性包含用于文档“格式化”的方法,例如 BackgroundPage Setup 等,但它是您想要用于文本操作的应用程序级别。实际上,在上面的代码中,Set WrdDoc = 可以被删除而不会产生任何影响。很奇怪,对吧? :)
    • 感谢@BK201,现在一切都清楚多了! Word VBA 的工作原理确实很奇怪。再次感谢,你很有帮助! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    相关资源
    最近更新 更多