2011-07-23 27 views
5

Sto provando a scrivere una piccola funzione che accetta un percorso file (in cui è stata salvata la cartella di lavoro), targetpath (dove verrà salvato il pdf) e una stringa di nomi di schede (pipe (|) delimitato) in Excel.VBA Fare riferimento a foglio di lavoro o foglio grafico

L'utente della funzione non deve immettere una stringa di nomi di schede (è facoltativo) e in caso contrario, desidero selezionare tutte le schede visibili e stamparle. Questo sarebbe nel caso in cui l'utente ha 50 grafici in fogli di lavoro separati e non si vuole scrivere una stringa come "Chart1 | Chart2 | ...."

Codice:

For Each WSO.Name In WBO.Worksheets 
    strSheets = strSheets & WSO.Name & "|" 
Next WSO 

strSheets = Left(strSheets, Len(strSheets) - 1) 
arraySheets() = Split(strSheets, "|") 

WBO.Sheets(arraySheets()).Select  
WBO.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _ 
    strFilePath, Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
    True 

Ce ne sono due problemi con il ciclo For Each: non preleva nessun foglio come "Chart1", prende solo fogli come "Sheet1". Inoltre, prenderà i fogli nascosti in modo che quando provo a selezionarli tutti ottengo un errore di fuori limite.

Non sapevo se un foglio grafico si riferisce a un foglio normale o perché vengono scelti anche fogli nascosti.

risposta

6

Utilizzare WBO.Sheets anziché WBO.Worksheets nel ciclo.

Verificare che WSO.Visible = xlSheetVisible per filtrare i fogli nascosti.

6

Ci sono due problemi con il ciclo For Each: non afferrare i fogli come "Chart1", che afferra solo fogli come la "Sheet1"

grafici e fogli di lavoro sono due raccolte diverse.
Prova questa:

Sub Demo() 
Dim oWs As Worksheet 
Dim oCs As Chart 

For Each oWs In ActiveWorkbook.Worksheets 
    Debug.Print oWs.Name 
Next 

For Each oCs In ActiveWorkbook.Charts 
    Debug.Print oCs.Name 
Next 
End Sub 
+0

Naturalmente, 'ActiveWorkbook.Sheets' comprende sia' 'ActiveWorkbook.Worksheets' e ActiveWorkbook.Charts'. –

Problemi correlati