VBA - 从命名范围创建数组

时间:2014-03-03 21:36:06

标签: arrays excel vba excel-vba

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

我有要在命名区域(列中)导出的工作表的所有名称。例如,我在A1中有“Total”,在“Data_Mappings”选项卡上有A2中的“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 =”行上出现类型不匹配。

如果我将tabs数组更改为注释掉的行,一切都会正常工作,我将获得这两个标签的pdf。

我最终希望根据另一个工作表中的单个单元格选择要在数组中使用的命名范围。用户有下拉列表并可以选择“发生的图形”或“付费图形”。但是我希望将第一部分放下来,而不必将表格的所有名称硬编码到VBA中。

谢谢!

3 个答案:

答案 0 :(得分:0)

这个怎么样:

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

现在我不确定您是要导出选择还是整张表。如果仅选择,您将使用Selection.ExportAsFixedFormat

更改ActiveSheet.ExportAsFixedFormat

答案 1 :(得分:0)

首先应首先激活 Data_Mappings 表。然后选择范围.U不能直接从另一张纸中选择范围。

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

答案 2 :(得分:0)

以下是修改后的代码,它完全符合我的需要。

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循环来放置数组的每个部分。