簡體   English   中英

Excel 到字 VBA 用於郵件合並

[英]Excel to word VBA for mail merge

我正在嘗試進行郵件合並,但找不到有關如何從 VBA 代碼更新現有合並字段的任何信息。 我在每頁上有 10 個標簽,但是每個 label 都需要在移動到下一條記錄之前作為一個塊進行處理,因為它們必須從多個列中提取來填寫 label。 所以我需要能夠用我存儲在數組中的內容替換合並字段值。 每 10 個標簽創建一個新頁面,就像正常的郵件合並一樣。

我已經考慮了幾種方法,但似乎沒有什么對我有用。

我從嘗試正常的郵件合並開始,但我只能讓頁面的左側正確填充右側填充導致數據在錯誤的時間跳轉到下一條記錄,似乎沒有go 回一條記錄的方法。 我找不到將 label 作為范圍或塊處理的方法。

之后,我嘗試直接引用域代碼。 使用此代碼,但它返回一個錯誤,它是只讀的。

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

我試圖看看是否有一種方法可以創建我可以替換的引用,但如果我設法做到這一點,它似乎只適用於單個頁面。 這看起來很愚蠢,它應該讓您將單元格組合在一起作為單個 object 或其他東西。

我剛剛解決了我自己的問題。 正常創建標簽(每個 label 都是它自己的表格單元格。)我可以在每個單元格中插入一個表格,這將允許每個 label 具有完全可自定義的格式,同時仍然單獨處理每個 ZD304BA20E96D874311588EEABAZ50。 所以我可以插入我需要的條形碼和公司徽標,而不必擔心來自其他區域的文本會破壞格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM