Почему этот макрос неправильно печатает PDF-файлы? - PullRequest
1 голос
/ 09 апреля 2019

Это продолжение предыдущего вопроса о печати в PDF, мой макрос работает без ошибок, однако он не выполняет именно то, что я хочу. Кажется, он вставляет каждое значение из моего выпадающего списка в правильную ячейку, но печатает только самый последний файл PDF.

Я хочу, чтобы мой макрос

  1. Вставьте первое выпадающее значение в правильную ячейку
  2. Пусть формулы вычисляют
  3. Распечатать эту страницу в PDF и сохранить ее по правильному пути к файлу
  4. Повторите 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

Путь к файлу: enter image description here

Если значение в P7 связано с D8 на другой вкладке, где раскрывающийся список подключен, поэтому при каждом изменении значения в раскрывающемся списке должен создаваться уникальный путь к файлу.

1 Ответ

1 голос
/ 09 апреля 2019

Вы должны использовать динамический путь к файлу, чтобы каждый файл сохранялся отдельно.Вы попытались выполнить это, используя именованный диапазон в качестве ссылки для вашей переменной filepath:

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 в исходный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...