2

试图构建一个宏来将数据从 Excel 复制到 MS Publsiher。我有 MS Word 的代码,但它在应用于 Publisher 时似乎不起作用。它在这一行失败 appPub.ActiveWindow.Bookmarks("Growth").Paste

字VBA:

    Sub SendData()
    Dim WordApp As Object
    Set WordApp = CreateObject("Word.Application")
    Dim ws As Worksheet
    ' Sheet1 is the codename for the sheet with the named range you want to copy,
    ' this is the name of the sheet in brackets in the VBAProject explorer, not the
    ' friendly name given on the worksheet tab itself visible to the end user.
    Set ws = Sheet4
    ' This is the constant string which holds the filepath to your Word document
    Const WORDDOC As String = "C:\Quarterly Reports - Word Version\Growth.docx"

    WordApp.Visible = True

    WordApp.Documents.Open WORDDOC

    ' Copies the named range "OrderRange" from the Excel book 
        'you are running this from.
    ws.Range("Growth").Copy
    ' Pastes it to the bookmark "OrderBookmark" in your Word doc template.
    WordApp.ActiveDocument.Bookmarks("Growth").Range.PasteAppendTable
    ' Sets your printer in Word to Adobe PDF and then prints the whole doc.
    ' WordApp.ActivePrinter = "Adobe PDF"
    ' WordApp.ActiveDocument.PrintOut
    Set WordApp = Nothing
    End Sub

发布者 VBA:

    Sub SendDataPB()
    Dim appPub As Object
    Set appPub = CreateObject("Publisher.Application")
    Dim ws As Worksheet
    ' Sheet1 is the codename for the sheet with the named range you want to copy,
    ' this is the name of the sheet in brackets in the VBAProject explorer, not the
    ' friendly name given on the worksheet tab itself visible to the end user.
    Set ws = Sheet4
    ' This is the constant string which holds the filepath to your Publisher document
    Const PublisherDOC As String = "C:\Quarterly Reports - Publisher     Version\Growth.pub"

    appPub.ActiveWindow.Visible = True

    appPub.Open PublisherDOC

    ' Copies the named range "OrderRange" from the Excel book
    '     you are running this from.
    ws.Range("Growth").Copy
    ' Pastes it to the bookmark "OrderBookmark" in your Publisher doc template.
    appPub.ActiveWindow.Bookmarks("Growth").Paste
    ' Sets your printer in Publisher to Adobe PDF and then prints the whole doc.
    ' PublisherApp.ActivePrinter = "Adobe PDF"
    ' PublisherApp.ActiveDocument.PrintOut
    Set appPub = Nothing
    End Sub
4

1 回答 1

0

ActiveWindow 似乎不包含任何 .Bookmarks 集合:https ://msdn.microsoft.com/EN-US/library/office/ff939707.aspx

试试ActiveDocument.Pages(YourPage).Shapes.Paste吧……运气好的话,可以将复制的表格粘贴为新形状。从那时起,您只需要想出一种巧妙的方法来放置和查找占位符,除非您设法在对象模型的其他地方找到可用的 Bookmarks 集合......祝你好运!

于 2015-09-22T20:51:20.950 回答