2015-04-16 2 views
0

Я использовал учебник со страницы электронных таблиц. Советы по Excel: слияние писем - без Word для создания отчета о стиле слияния для 100 записей. Использование индекса записи и косвенных поисков из другого листа все отлично работает, чтобы генерировать нужные мне отчеты.Слияние почты в PDF, а не Печать

Вместо того, чтобы печатать, я хочу сохранить каждый вывод в формате PDF с именем, использующим поле в слиянии. Я попытался заменить «ActiveSheet.PrintOut» на «ActiveSheet.ExportasFixedFormat» и ввел спецификации 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

'Имя файла: =" C: \ Users \ ewilliamson \ PDFs \ "& HRETID & i &" .pdf "' по крайней мере даст вам нумерованные копии –

+0

В конечном счете, я хотел бы, чтобы имя файла было «HRETID_Date.pdf». Поле «HRETID» - это косвенный поиск из другого листа, основанного на индексе «Текущая запись», и изменяется с каждой строкой в ​​диапазоне. Я удалил HRETID и просто использовал переменную «i», и она сработала, чтобы сгенерировать нужные мне PDF-файлы, но они просто нумеруются последовательно. Если есть способ включить HRETID на основе переменной i и включить ее в имя файла, я бы установил все. Благодаря! – 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 - одна из переменных, которые смотрели с другого листа. Я смог создать пронумерованные PDF-файлы, используя ответ @Tim Williams выше, теперь мне просто нужно отключить «i» для разных значений «HRETID», которые просматриваются. Возможно, я использую «диапазон» ненадлежащим образом. – Evan