vba excel设置dynamic命名范围

我想在一个variables中设置所有命名的范围并导出为PDF。 我能够做手动input所有命名的范围。 我的问题是命名的范围是可变的,有时它会有一些时间,将有超过10个。请build议…我试着用下面的代码。

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 

但下面的代码适用于我,当我手动input范围名称..

 Set rs = wbBook.Range("Page_1,Page_2,Page_3") rs.Select Selection.ExportAsFixedFormat xlTypePDF, strPath, , , False 

你不能将一个集合 (许多对象)传递给一个对象variables (单个对象)。 你需要遍历集合的对象。 通常我们用For Each循环来做到这一点,但在这种情况下,因为我需要单独设置第一个元素,因为我使用了一个简单的For循环。

另外,请避免使用。如果可以,请select。 直接使用你的对象。

另请注意,您正在讨论工作簿中的所有命名范围,如果您在多个工作表中命名范围,则这可能会导致问题。 我没有testing,但我怀疑它会起作用。

 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