2014-03-03 154 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