【问题标题】:Append instead of replacing Word document contents追加而不是替换 Word 文档内容
【发布时间】:2016-08-30 19:11:35
【问题描述】:

我在 Excel 工作簿中有多个工作表。我在循环中进行迭代,在其中复制数据范围并将它们粘贴到 word 中。

问题是每次将工作表的内容复制并粘贴到单词时,以前的所有内容都会消失。

那么如何停止替换之前的内容,让VBA脚本追加到word文档中呢?

Sub ewc()

    Dim WordApp As Word.Application
    Dim myDoc As Word.Document
    Dim WordTable As Word.Table
    Dim ws As Worksheet
    Dim tbl As ListObject

    Application.ScreenUpdating = False
    Application.EnableEvents = False

    Set WordApp = GetObject(class:="Word.Application")

    WordApp.Visible = True
    WordApp.Activate

    Set myDoc = WordApp.Documents.Open("D:\asd.docx")

    For Each ws In ThisWorkbook.Worksheets
        Debug.Print ws.Name, ThisWorkbook.Worksheets.Count

        ws.UsedRange.Activate
        LastRow = StartCell.SpecialCells(xlCellTypeLastCell).Row
        LastColumn = StartCell.SpecialCells(xlCellTypeLastCell).Column
        Debug.Print LastRow, LastColumn

        ws.Range(StartCell, ws.Cells(LastRow, LastColumn)).Select
        myDoc.Content.Paste

        Set WordTable = myDoc.Tables(1)
        WordTable.AutoFitBehavior (wdAutoFitWindow)
        myDoc.Save


EndRoutine:
        Application.ScreenUpdating = True
        Application.EnableEvents = True

'Clear The Clipboard
        Application.CutCopyMode = False
    Next ws
End Sub

【问题讨论】:

  • 我猜如果你不知道如何在现有文本结束后粘贴内容,你可以复制现有文本并将新文本粘贴到顶部?虽然它不起作用似乎很奇怪,但我在 Word VBA 中做得并不多。可能有标签吗?

标签: vba excel


【解决方案1】:

myDoc.Content.Paste 替换 myDoc.Content 中的所有内容。

If you don't want to replace the contents of the range, use the Collapse method before using this method.

由于不能折叠myDoc.Content,所以需要自定义范围对象

Dim pasteRange as Word.Range
'...
Set pasteRange = myDoc.Content
pasteRange.Collapse wdCollapseEnd
pasteRange.Paste

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 2010-12-13
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    相关资源
    最近更新 更多