这是上一个有关“打印到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,在那里下拉列表被插入,因此,只要下拉列表中的值更改,它就应该创建一个唯一的文件路径。
答案 0 :(得分: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
。