Почему этот макрос неправильно печатает PDF-файлы

Это продолжение предыдущего вопроса о печати в 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

Путь к файлу: Почему этот макрос неправильно печатает PDF-файлы

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

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

urdearboy 09.04.2019 15:28

Из какой программы вы запускаете VBA? Эксель?

Luuklag 09.04.2019 15:33

У меня есть динамический путь к файлу. Да Excel

austinmb 09.04.2019 15:34

Я сделал это правильно? я новичок на сайте

austinmb 09.04.2019 16:35

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

Luuklag 09.04.2019 16:42
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
5
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Другие вопросы по теме