VBA – 从命名范围创build数组

我最终试图将我的Excel工作簿中的某些表导出为pdf。

我有我想要在命名范围(在列中)导出的工作表的所有名称。 作为一个例子,我在A1中select“Total”,在“Data_Mappings”选项卡上selectA2中的“Total(P)”。 这两个单元格具有“Incurred_Graphs”的命名范围。

这是我目前的代码:

Dim wb As Workbook Dim TabsArray() As Variant fp = "C:\Users\chris\Documents\Testing\Graphs\Graphs.pdf" Set wb = ActiveWorkbook TabsArray = Worksheets("Data_Mappings").Range("Incurred_Graphs") 'TabsArray = Array("Total", "Total (P)") wb.Sheets(TabsArray).Select ActiveSheet.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=fp, _ Quality:=x1QualityStandad, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False 

我在“TabsArray =”行中得到一个types不匹配。

如果我将tabs数组更改为注释掉的行,一切都会起作用,我将得到这两个选项卡的pdf。

我最终希望从另一个工作表中select基于单个单元格的数组中使用的命名范围。 用户有一个下拉列表,可以select“发生图”或“付费图”。 但是我想把这个第一部分写下来,而不必将表单的所有名称硬编码到VBA中。

谢谢!

这个怎么样:

 Dim wb As Workbook Dim TabsArray() As Variant fp = "C:\Users\chris\Documents\Testing\Graphs\Graphs.pdf" Set wb = ActiveWorkbook wb.Sheets("Data_Mappings").Range("Incurred_Graphs").Select ActiveSheet.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=fp, _ Quality:=x1QualityStandad, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False 

现在我不确定是否要导出select或整个工作表。 如果只有select,您可以使用Selection.ExportAsFixedFormat更改ActiveSheet.ExportAsFixedFormat

你应该首先激活Data_Mappings表。 然后select范围.U不能直接从另一个表中select范围。

 Dim wb As Workbook Dim TabsArray() As Variant fp = "C:\Users\chris\Documents\Testing\Graphs\Graphs.pdf" Set wb = ActiveWorkbook wb.Sheets("Data_Mappings").select Range("Incurred_Graphs").Select ActiveSheet.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=fp, _ Quality:=x1QualityStandad, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False 

这里是修改后的代码,它也正是我所需要的。

 Sub pdf() Dim wb As Workbook Dim TabsArray() As Variant Dim TabsArrayRng As Range Set wb = ActiveWorkbook fp = "C:\Users\chris\Documents\Testing\Graphs\" & Sheets("Export to PDF").Range("D7").Text & ".pdf" Set TabsArrayRng = Sheets("Data_Mappings").Range("Incurred_Graphs") N = TabsArrayRng.Rows.Count ReDim TabsArray(1 To N) For i = 1 To N TabsArray(i) = TabsArrayRng.Cells(i, 1).Value2 Next i wb.Sheets(TabsArray).Select ActiveSheet.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=fp, _ Quality:=x1QualityStandad, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False End Sub 

我不能直接设置数组的范围,但需要使用for / next循环来放置数组的每个部分。