2011-07-23 13 views
5

Estoy intentando escribir una pequeña función que toma una ruta de archivo (donde se guardó el libro), ruta de destino (donde se guardará el pdf) y una cadena de nombres de pestaña (tubería (|) delimitada) en excel.VBA Consulte la hoja de cálculo frente a la hoja de gráfico

El usuario de la función no tiene que ingresar una cadena de nombres de pestañas (es opcional) y si no lo hacen, quiero seleccionar todas las pestañas visibles e imprimirlas. Este sería el caso si el usuario tiene 50 gráficos en hojas de cálculo independientes y no quiere escribir una cadena como "Gráfico1 | Gráfico2 | ...."

Código:

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 

Hay dos problemas con el bucle For Each: no capta ninguna hoja como "Chart1", solo capta hojas como "Sheet1". Además, tomará hojas ocultas para que cuando intente seleccionarlas obtenga un error fuera de límites.

No sabía si se hace referencia a una hoja de gráfico de forma diferente a una hoja normal o por qué también se eligen hojas ocultas.

Respuesta

6

Use WBO.Sheets en lugar de WBO.Worksheets en el bucle.

Compruebe que WSO.Visible = xlSheetVisible para filtrar las hojas ocultas.

6

Hay dos problemas con el bucle For Each: no agarrar las hojas tales como "Gráfico1", sólo se agarra hojas tales como "Sheet1"

Listas y Hojas son dos colecciones diferentes
Prueba esto:

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

Por supuesto, '' ActiveWorkbook.Sheets' incluye tanto ActiveWorkbook.Worksheets' y 'ActiveWorkbook.Charts'. –

Cuestiones relacionadas