#excel #vba
#excel #vba
Вопрос:
Это продолжение предыдущего вопроса о печати в PDF, мой макрос запускается без ошибок, однако он делает не совсем то, что я хочу. Похоже, что он вставляет каждое значение из моего выпадающего списка в правильную ячейку, но печатает только самый последний PDF-файл.
Я хочу, чтобы мой макрос
- Вставьте первое выпадающее значение в правильную ячейку
- Пусть формулы вычисляются
- Распечатайте эту страницу в формате PDF и сохраните ее по правильному пути к файлу
- Повторите 1-3 для каждого значения в выпадающем списке
Как мне настроить макрос для этого?
Sub Print_To_PDF()
Sheets("MS Wall Summary Daily View").Activate
Dim vRws As Long, vRng As Range
Dim d As Range, d8 As Range, Wst As Worksheet
Dim fPathFile As String
fPathFile = [NewStoreRollout]
Set Wst = Worksheets("MS Wall Summary Daily View")
Set d8 = Wst.Range("D8")
With Wst
vRws = .Cells(.Rows.Count, "A").End(xlUp).Row
Set vRng = Range(.Cells(2, "A"), .Cells(vRws, "A"))
.PageSetup.PrintArea = "$C$2:$M$116"
End With
For Each d In vRng.Cells
d8 = d
Wst.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fPathFile, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Next d
MsgBox "Finished"
End Sub
Где значение в P7 связано с D8 на другой вкладке, где подключается выпадающий список, поэтому это должно создавать уникальный путь к файлу при каждом изменении значения в раскрывающемся списке.
Комментарии:
1. Вы уверены, что экспортируете не все из них, а просто перезаписываете предыдущий файл? Имя вашего файла должно быть динамическим
2. Из какой программы вы запускаете VBA? Excel?
3. У меня есть динамический путь к файлу. Да, Excel
4. Правильно ли я это сделал? Я новичок на сайте
5. Вы приняли мой ответ, который указывает, что из всех ответов вы нашли мой наиболее полезным. Если появится другой ответ, который вы сочтете лучшим, вы всегда можете снять пометку с моего ответа как принятого и отметить другой ответ как принятый.
Ответ №1:
Вы должны использовать динамический путь к файлу, чтобы гарантировать, что каждый файл сохраняется отдельно. Вы пытались выполнить это, используя именованный диапазон в качестве ссылки для вашей переменной filepath:
Dim fPathFile As String
fPathFile = [NewStoreRollout]
При этом сохраняется значение [NewStoreRollout]
into fPathFile
. Однако это не создает какой-либо связи между вашей переменной fPathFile
и вашим именованным диапазоном. Чтобы получить самое последнее значение вашего именованного диапазона, вам необходимо обновлять свою переменную на каждой итерации выполняемого цикла. Вы должны сделать это перед использованием переменной для сохранения файла PDF. Вы можете обновить значение, назначив его снова, как и в первый раз.
For Each d In vRng.Cells
d8 = d
fPathFile = [NewStoreRollout] 'Update the value of fPathFile to create unique files to save
Wst.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fPathFile, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Next d
Для завершения этого я вставил строку fPathFile = [NewStoreRollout]
сразу после строки d8 = d
в ваш исходный код.