简体   繁体   中英

Update Word bookmarks with formatted Excel data from Excel

The following code is intended to update Word bookmarks with formatted data from Excel, however the formatting doesn't come across and unsure why, would appreciate any suggestions. The formatted data is text with certain works underlined.

Set wb = ActiveWorkbook
TodayDate = Format(Date, "mmmm d, yyyy")
Path = wb.Path & "\update_file.docx"

 'Create a new Word Session
Set pappWord = CreateObject("Word.Application")

 'Open document in word
Set docWord = pappWord.Documents.Add(Path)

 'Loop through names in the activeworkbook
For Each xlName In wb.Names
     'if xlName's name is existing in document then put the value in place of the bookmark
    If docWord.Bookmarks.Exists(xlName.Name) Then
    docWord.Bookmarks(xlName.Name).Range.Text = Range(xlName).Text  
    End If
Next xlName

Try this instead, using Copy and the (poorly-documented) ExecuteMso method. You need to use Copy against the range (in order to capture formatting) and then you can effectively do the same as the right-click Paste + Keep Source Formatting option:

在此处输入图片说明

If docWord.Bookmarks.Exists(xlName.Name) Then
    xlName.RefersToRange.Copy
    docWord.Bookmarks(xlName.Name).Select
    docWord.Application.CommandBars.ExecuteMso "PasteSourceFormatting"
End If

Alternatively, and this might be better because ExecuteMso is asynchronous and can result in timing issues:

xlName.RefersToRange.Copy
docWord.Bookmarks(xlName.Name).Range.PasteAndFormat 16 'wdFormatOriginalFormatting

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM