2014-03-03 100 views
1

我最终试图将我的excel工作簿中的某些表导出为pdf。VBA - 从命名范围创建数组

我有我想要在命名范围(在列中)导出的工作表的所有名称。作为一个例子,我在“Data_Mappings”选项卡中有A1中的“Total”和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 =” 行类型不匹配。

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

我最终想选择基于单个单元格的数组中使用的命名范围。用户有一个下拉菜单,例如可以选择“发生图”或“付费图”。但是我想把这个第一部分弄下来,而不必将表单的所有名称硬编码到VBA中。

谢谢!

回答

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 /下一个循环放置在阵列的每个部分所需

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 

现在我不知道,如果你要导出的选择或整个页面。如果只有选择,您将更改ActiveSheet.ExportAsFixedFormat与Selection.ExportAsFixedFormat

+0

给我一个运行时错误“1004”:选择Range类失败的方法。 (我也在每个选项卡上设置了选定的打印范围,因此我只能打印每张纸) – Sqwirtle

+0

奇怪。如果您尝试使用wb.Sheets(“Data_Mappings”),请选择,然后选择ActiveSheet.Range(“Incurred_Graphs”)。他们在哪条线上失败? –

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 
+0

这将只是pdf“Data_Mappings”表单。我正在使用“Data_Mappings”中的范围来导出在此范围内标记的每个选项卡。 – Sqwirtle