我想在一个变量中设置所有命名范围并导出为PDF。当我手动输入所有命名范围时,我能够做到。我的问题是命名范围是可变的,有时它将有一个时间它将超过10.请建议...我尝试使用以下代码。
Dim wbBook As Workbook
Dim nName As Name
Set wbBook = ActiveWorkbook
Set nName=wbBook.Names
Set rs = wbBook.Range(nNames)
rs.Select
Selection.ExportAsFixedFormat xlTypePDF, strPath, , , False
但是当我手动输入范围名称时,下面的代码对我有用..
Set rs = wbBook.Range("Page_1,Page_2,Page_3")
rs.Select
Selection.ExportAsFixedFormat xlTypePDF, strPath, , , False
答案 0 :(得分:4)
您无法将集合(许多对象)传递给对象变量(单个对象)。您需要遍历集合的对象。通常我们使用For Each
循环执行此操作,但在这种情况下,由于Union
我需要单独设置第一个元素,因此我使用了一个简单的For
循环。
另外,如果可以,请避免使用.Select
。只需直接使用您的对象。
另请注意,您正在讨论工作簿中的所有命名范围,如果您在多个工作表中命名了范围,这可能会导致问题。我没有经过测试,但我怀疑它会起作用。
Dim wbBook As Workbook
Dim i As Integer
Dim rs As Range
Set wbBook = ActiveWorkbook
Set rs = wbBook.Names(1).RefersToRange
For i = 2 To wbBook.Names.Count
Set rs = Union(rs, wbBook.Names(i).RefersToRange)
Next
rs.ExportAsFixedFormat xlTypePDF, strPath, , , False