Это продолжение предыдущего вопроса о печати в PDF. У меня есть макрос, который запускается без ошибок, однако он не делает именно то, что я хочу. Кажется, что каждое значение из моего раскрывающегося списка вставляется в правильную ячейку, но печатается только самый последний PDF-файл.
Я хочу, чтобы мой макрос
Как настроить макрос для этого?
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 на другой вкладке, где подключается раскрывающийся список, поэтому это должно создавать уникальный путь к файлу каждый раз, когда значение в раскрывающемся списке изменяется.
Из какой программы вы запускаете VBA? Эксель?
У меня есть динамический путь к файлу. Да Excel
Я сделал это правильно? я новичок на сайте
Вы приняли мой ответ, что указывает на то, что из всех ответов вы нашли мой наиболее полезным. Если появится другой ответ, который вы найдете лучше, вы всегда можете снять отметку с моего ответа как принятого и отметить другой ответ как принятый.
Вы должны использовать динамический путь к файлу, чтобы каждый файл сохранялся отдельно. Вы пытались сделать это, используя именованный диапазон в качестве ссылки для вашей переменной пути к файлу:
Dim fPathFile As String
fPathFile = [NewStoreRollout]
Это сохраняет значение [NewStoreRollout]
в 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
в ваш исходный код.
Вы уверены, что не экспортируете их все, а просто перезаписываете предыдущий файл? Ваше имя файла должно быть динамическим