Excel 到单词 VBA 用于邮件合并

Excel to word VBA for mail merge

我正在尝试进行邮件合并,但找不到有关如何从 VBA 代码更新现有合并字段的任何信息。我在每页上有 10 个标签,但在移动到下一条记录之前,每个标签都需要作为一个块进行处理,因为它们必须从多个列中拉出以填写标签。所以我需要能够用我存储在数组中的内容替换 Merge 字段值。像正常的邮件合并一样,每 10 个标签创建一个新页面。

我考虑了几种方法,但似乎没有什么适合我的。

我开始只是尝试正常的邮件合并,但我只能让页面的左侧正确填充填充右侧导致数据在错误的时间跳转到下一条记录并且没有这似乎是一种恢复记录的方法。我找不到将标签处理为范围或块的方法。

之后我尝试直接引用字段代码。使用此代码,但它 returns 一个错误,它是只读的。

Sub OpenExcelFile()

    
    Dim oExcel As Excel.Application
    Dim oWB As Workbook
    Dim RowLoc As Integer
    Dim ExcelArray(1 To 10000, 1 To 6) As Variant
    
    RowLoc = 1
    
    Set oExcel = New Excel.Application
    Set oWB = oExcel.Workbooks.Open("C:\Users\ScottCannon\Documents\Sticker Maker.xlsm")
    oExcel.Visible = True
    Do While oWB.Sheets("Barcode").Cells(RowLoc, 1) <> ""
        ExcelArray(RowLoc, 1) = oWB.Sheets("Barcode").Cells(RowLoc, 1)
        ExcelArray(RowLoc, 2) = oWB.Sheets("Barcode").Cells(RowLoc, 2)
        ExcelArray(RowLoc, 3) = oWB.Sheets("Barcode").Cells(RowLoc, 3)
        ExcelArray(RowLoc, 4) = oWB.Sheets("Barcode").Cells(RowLoc, 4)
        ExcelArray(RowLoc, 5) = oWB.Sheets("Barcode").Cells(RowLoc, 5)
        ExcelArray(RowLoc, 6) = oWB.Sheets("Barcode").Cells(RowLoc, 6)
        RowLoc = RowLoc + 1
    Loop
    
    RowLoc = 1
    ActiveDocument.MailMerge.DataSource.DataFields("Job_Name").Value = ExcelArray(RowLoc, 1) 'this part specifically doesn't work. 
    oWB.Close
    Excel.Application.Quit
    
End Sub

我试图看看是否有一种方法可以创建我可以替换的引用,但似乎如果我设法做到这一点,它只适用于单个页面。这看起来很愚蠢,它应该让您将单元格组合在一起作为单个对象或其他东西。

我刚刚解决了我自己的问题。正常创建标签(每个标签都是 table 的自己的单元格)我可以将 table 插入每个单元格,这将允许每个标签具有完全可自定义的格式,同时仍然处理每个标签个别地。所以我可以插入我需要的条形码和公司徽标,而不用担心其他区域的文本会搞砸格式。