2015-04-16 70 views
0

我使用了電子表格頁面Excel中的教程技巧:郵件合併 - 無Word爲100條記錄創建郵件合併樣式報告。使用記錄索引和來自其他工作表的記錄索引都能很好地生成我需要的報告。郵件合併爲PDF而不是打印

而不是打印,我正在尋找將每個輸出保存爲使用合併中的字段命名的PDF。我試圖用「ActiveSheet.ExportasFixedFormat」替換「ActiveSheet.PrintOut」並輸入了PDF規範。它在一定程度上起作用,因爲我能夠生成PDF到指定位置,但它只會生成一個PDF,而不是我嘗試創建的整個範圍。

這是我正在嘗試使用的代碼。我已經通過其他答案瞭解瞭如何遍歷每條記錄以創建單個PDF,但一次只能生成的不僅僅是單個PDF。

Public Const APPNAME As String = "Progress Report" 

Option Explicit 

Sub PrintForms() 
    Dim StartRow As Integer 
    Dim EndRow As Integer 
    Dim Msg As String 
    Dim HRETID As String 
    Dim i As Integer 

Sheets("ProgressReport").Activate 
StartRow = Range("StartRow") 
EndRow = Range("EndRow") 
HRETID = Range("HRETID") 

If StartRow > EndRow Then 
    Msg = "ERROR" & vbCrLf & "The starting row must be less than the ending row!" 
    MsgBox Msg, vbCritical, APPNAME 
End If 

For i = StartRow To EndRow 
    Range("RowIndex") = i 
     ActiveSheet.ExportAsFixedFormat _ 
     Type:=xlTypePDF, _ 
     Filename:="C:\Users\ewilliamson\PDFs\" & HRETID, _ 
     Quality:=xlQualityStandard, _ 
     IncludeDocProperties:=True, _ 
     IgnorePrintAreas:=False 
Next i 
End Sub 
+0

你想去哪裏PDF文件名來自? –

+0

'Filename:=「C:\ Users \ ewilliamson \ PDFs \」&HRETID&i&「.pdf」'至少會給你編號的副本 –

+0

最終,我希望文件名爲「HRETID_Date.pdf」。 「HRETID」字段是基於「當前記錄」索引的另一張工作表的間接查找,並隨範圍中的每一行發生更改。我刪除了HRETID,並使用了「i」變量,它可以生成我需要的pdf,但它們只是按順序編號。如果有一種方法可以包含基於i變量的HRETID並將其包含在文件名中,那麼我將全部設置。謝謝! – Evan

回答

0

如果你希望你的文件名是動態的,那麼你需要在循環中從HRETID回暖的價值,而不是僅僅一次的循環之外:

For i = StartRow To EndRow 
    Range("RowIndex") = i 
     ActiveSheet.ExportAsFixedFormat _ 
     Type:=xlTypePDF, _ 
     Filename:="C:\Users\ewilliamson\PDFs\" & _ 
        Range("HRETID").Value & ".pdf", _ 
     Quality:=xlQualityStandard, _ 
     IncludeDocProperties:=True, _ 
     IgnorePrintAreas:=False 
Next i 
0

它看起來像HRETID在你的文件名的值:=分配沒有改變。 (爲此,需要爲循環中的每一行分配一個新值)

如果要循環訪問列以將列中單元格的值分配給HRETID,請嘗試以下操作:

Dim rItem as Range 

for each ritem in Range("HRETID") 
    ActiveSheet.ExportAsFixedFormat _ 
    Type:=xlTypePDF, _ 
    Filename:="C:\Users\ewilliamson\PDFs\" & ritem.value , _ 
    Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, _ 
    IgnorePrintAreas:=False 

next rItem 

請注意,您不需要HRETID作爲字符串,因爲您可以從rItem中獲取單元格值。

+0

工作表被構造爲使用rowindex和來自另一工作表的間接查找將信息編譯成報告格式。 HRETID是從另一張表中查找的變量之一。我能夠使用上面的@Tim Williams響應生成編號的PDF,現在我只需要將「i」替換爲查找的不同「HRETID」值。我可能會使用「範圍」不當。 – Evan