Tengo una macro que me imprime todas las hojas de un libro y me gustaría que solo imprimiera a partir de las 6 o sea desde la 7

La macro se la pongo debajo, y corre muy bien pero me imprime todas las hojas individuales Y me gustaría que imprimiera desde la 7, individuales

Y por otro lado abusando de vuestra amabilidad, otra macro que me haga lo mismo pero que lo guarde en un solo archivo y me pregunte que nombre debo darle.

Todo si es posible para guardar en la carpeta donde está el archivo de Excel.

Gracias de antemano. Un abrazo.

Sub CreaPDFhojas()
 Dim hoja As Worksheet
 Dim NombreArchivo, RutaArchivo As String
 For Each hoja In Worksheets
 NombreArchivo = hoja.Name
 RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".pdf"
hoja.ExportAsFixedFormat Type:=xlTypePDF, Filename:=RutaArchivo, _
 Quality:=xlQualityStandard, IncludeDocProperties:=True, _
 IgnorePrintAreas:=False, OpenAfterPublish:=False
 Next hoja
 End Sub

1 respuesta

Respuesta
1

Hay varias maneras de llamar a las hojas: Hoja1, Hoja2, etc

O quizás la séptima en ubicación desde las pestañas.

Mejor deja una imagen de las pestañas y de la lista de objetos en el Editor marcando cuáles deben ser exportadas.

PD) Te recuerdo que tienes aún pendiente la otra consulta con mi respuesta (sin valorar aún).

Sdos.

Elsa

Hola Elsa buenos días.

Muchas gracias por tu contestación.

Soy nuevo en el foro y no se cómo hay que hacer la valoración. Yo te di las gracias y creía que eso era. suficiente. Perdona, intentaré buscar la manera y lo hago.

En cuanto la contestación de hoy como yo soy poco ducho en el tema me gustaría ponerle que se imprima a partir de la 6 ya que las hojas no siempre tienen los mismos nombres. Si pudiera añadirme esta orden a la macro que te envié. Te lo agradecería.

Un abrazo buen día y gracias de nuevo.

En primer lugar te dejo una macro e imagen para que veas la diferencia entre nombre, índice o nombre dado por Excel a las hojas.

Sub reconociendoHojas()
'x Elsamatilde
For Each hoja In Worksheets
    MsgBox hoja.Name    'nombre dado x el usuario
    MsgBox hoja.Index   'indice en el orden en que aparecen en las pestañas
    MsgBox hoja.CodeName  'nombre dado x Excel
Next hoja
End Sub

Entonces suponiendo que querrás exportar a partir de la 6ta hoja según el orden en que se encuentran en las pestañas, tu macro evaluará el Index:

Sub CreaPDFhojas()
Dim hoja As Worksheet
Dim NombreArchivo, RutaArchivo As String
For Each hoja In Worksheets
'control de hojas
If hoja.Index > 5 Then
    NombreArchivo = hoja.Name
    RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".pdf"
    hoja.ExportAsFixedFormat Type:=xlTypePDF, Filename:=RutaArchivo, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=False
End If
Next hoja
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas