excel - PDF每个命名范围到单个页面 - VBA
问题描述
我有一个 excel 模型,可以根据用户的输入动态更改范围的数量和名称。然后将所有命名范围填充到参考选项卡上,它们的位置位于相应的单元格中。我需要编写一个宏,将单个页面上的每个命名范围都转换为 PDF,但作为单个 PDF 文件。
我已经尝试了所有可以找到显示 PDF 范围的各种方法的论坛,但没有任何方法可以统一解决两个特定问题:
1) 命名范围的数量会动态变化。我不能在我的 VBA 代码中静态命名它们。2) 命名范围位于 10 个单独的工作表上。3) 一些工作表上有多个命名范围。它并不总是一对一的,这意味着我需要它来 PDF 来自同一张表的多个命名范围,但结果仍然必须是每个 PDF 页面的一个命名范围。
有人可以帮助我获取以下列表并实现我的目标,即为每个命名范围创建一个具有单个页面的 PDF 文件吗?作为参考,我的命名范围表如下所示:
Named Range, Location
Range1, =Sheet1!$K$2:$R$21
Range2, =Sheet2!$K$2:$R$21
Range3, =Sheet3!$K$2:$R$21
Range4, =Sheet4!$K$2:$R$21
Range5, =Sheet5!$K$2:$R$21
Range6, =Sheet6!$K$2:$R$21
Range7, =Sheet7!$K$2:$R$21
Range8, =Sheet8!$K$2:$R$21
Range9, =Sheet9!$K$2:$R$21
Range10, =Sheet10!$B$2:$I$21
Range10, =Sheet10!$K$2:$R$21
我在这个问题上尝试了多个角度。我试图将所有命名范围移动到一个选项卡,但这非常困难,因为命名范围具有不同的格式,这意味着它不像复制和粘贴那么简单。我很犹豫是否在这里显示任何代码,因为我尝试过的 20 次迭代离实现我的目标还差得很远。非常感谢任何关于如何做到这一点的结构性指导。
我希望的最终结果是一个宏,它可以从 Excel 工作簿中对所有命名范围进行 PDF,每个命名范围在 PDF 文件中都有自己的页面。
解决方案
归功于@Tim Williams 的想法,我只是提供基本的骨架代码作为简单示例,以便根据要求进行修改。
Sub test()
Dim Rng As Range
Dim Ws As Worksheet, Wb As Workbook
Dim Nm As Name
Set Wb = Application.Workbooks.Add
For Each Nm In ThisWorkbook.Names
Set Rng = Nm.RefersToRange
Set Ws = Rng.Worksheet
With Ws.PageSetup
.PrintArea = Rng.Address
' may set other pagesetup properties according to requirement
End With
Ws.Copy After:=Wb.Sheets(Wb.Sheets.Count)
Next Nm
Wb.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\user\Documents\Range to PDF.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
Wb.Close False
Set Wb = Nothing
End Sub
推荐阅读
- flutter - 颤振:google_mobile_ads 酒吧。如何实现 GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth & GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth?
- c# - C# 静态方法是否同步和锁定?
- visual-studio - 查找 Visual Studio PATH/LIB 文件的问题
- python - 并行处理没有提高效率?
- android - 如何在 Jetpack compose 中制作 FlipCard 动画
- swift - 无法导入 EventKitUI。错误无法构建 Objective-C 模块
- c++ - 在 dll 中调用函数,同时在其中包含 dll/lib 文件
- coq - 为什么在相当简单的情况下无法进行案例分析
- python - 输出到终端和输出到文件得到不同的结果
- rest - 即使在 GET 请求中,我们也可以使用 SCIM 属性的“请求”可返回属性吗?