Correspondencia en exel y guardar pdf

Tengo un código que genera pdf pero necesito que se realice a partir de hoja activa

Adjunto fotografías

Codigo del boton EXPORTAR PDF

2 respuestas

Respuesta
1

Según tu código, nombras a la hoja 8 como Generar, le pasas los datos de otra hoja llamada Plantilla y sigues realizando algunas tareas desde esa hoja Generar.

Entonces, si lo que necesitas es que todo eso se haga desde la hoja activa (Enero 2018 o Febrero 2018 o la que fuere), solo reemplaza la línea donde diga: Sheets(8).Name ="GENERAR"

Por esta otra:

ActiveSheet.Name = "GENERAR"

Hola muchas gracias por responder e intentado de solucionarlo pero aun no puedo 🙁

Tampoco estás aclarando qué hoja quieres que se reemplace por la activa... veamos el código:

Al inicio seleccionas la hoja 8 y le asignas el nombre GENERAR y luego la seleccionas. Si esa hoja debe ser la activa ya te indiqué cómo reemplazar esa instrucción.

Luego seleccionas la hoja PLANTILLA y la copias en GENERAR y te queda como hoja activa. Nuevamente, si en lugar de Plantilla debe ser la activa solo usa ACTIVESHEET en lugar de ese nombre.

Ahora, luego del subrpoceso ACTUALIZA la hoja activa es la llamada GENERAR... pero le indicas que el nombre sea una cadena de la hoja DATOS... nuevamente si lo que quieres es que la cadena tome el valor de las celdas de la hoja activa, utiliza la expersión ACTIVESHEET en lugar de Sheets("DATOS").

Si aún así no lo resolvés debieras dejar mayores aclaraciones de cuál es la hoja que debe ser reemplazada, según imagen por Enero o Febrero o el mes que fuese.

Sdos!

Esta es la macro para tu botón PDF:

Private Sub CommandButton4_Click()
Dim i As Double
Dim ruta As String
Dim hojax As String   'EM: item seleccionado desde el combo
Application.ScreenUpdating = False
'Activamos nuestro libro
'EM: ya se está en el libro activo y además ya existe hoja llamada GENERAR
    'ThisWorkbook.Activate
    'Sheets(12).Name = "GENERAR"
'seleccionamos hoja "GENERAR"
Sheets("GENERAR").Select
'Contamos el número de casos .....EM: de la hoja seleccionada desde el combo
hojax = ComboBox1.Text
Fin = Application.CountA(Sheets(hojax).Range("A:A"))
'Elegimos la carpeta donde queremos guardar los archivos
On Error Resume Next
        With CreateObject("shell.application")
        ruta = .browseforfolder(0, Titulo, 0).Items.Item.Path
End With: On Error GoTo 0
'Si no elegimos la carpeta de destino, la macro se para
If ruta = Empty Then
        MsgBox "DEBES SELECCIONAR UNA CARPETA DE DESTINO, PULSA DE NUEVO EL BOTÓN GENERAR", vbExclamation
        Exit Sub
End If
'Iniciamos un for
For i = 2 To Fin
    'Creamos variables para cada uno de los datos a incorporar en la hoja "GENERAR"
    FOLIO = Sheets(hojax).Cells(i, 1)
    PRODUCTO = Sheets(hojax).Cells(i, 2)
    CLIENTE = Sheets(hojax).Cells(i, 3)
    COMUNA = Sheets(hojax).Cells(i, 4)
    SECTOR = Sheets(hojax).Cells(i, 5)
    FECHA = Format(Sheets(hojax).Cells(i, 6), "[$-C0A]d ""de"" mmmm ""de"" yyyy;@")
    INSPECTOR = Sheets(hojax).Cells(i, 7)
    'ETC.....
    'Llamamos a la macro Actualiza
    Call ACTUALIZA
    'Damos nombre a la hoja activa, que es GENERAR.... con datos de hojax
    ActiveSheet.Name = Sheets(hojax).Cells(i, 1) & " " & Sheets(hojax).Cells(i, 2)
    With ActiveSheet
    'Reemplazamos los datos en los marcadores que hemos creado en Plantilla
        Cells.Replace What:="<FOLIO>", Replacement:=FOLIO, LookAt:=xlPart, SearchOrder:=xlByRows
        Cells.Replace What:="<PRODUCTO>", Replacement:=PRODUCTO, LookAt:=xlPart, SearchOrder:=xlByRows
        Cells.Replace What:="<CLIENTE>", Replacement:=CLIENTE, LookAt:=xlPart, SearchOrder:=xlByRows
        Cells.Replace What:="<COMUNA>", Replacement:=COMUNA, LookAt:=xlPart, SearchOrder:=xlByRows
        Cells.Replace What:="<SECTOR>", Replacement:=SECTOR, LookAt:=xlPart, SearchOrder:=xlByRows
        Cells.Replace What:="<FECHA>", Replacement:=FECHA, LookAt:=xlPart, SearchOrder:=xlByRows
        Cells.Replace What:="<INSPECTOR>", Replacement:=INSPECTOR, LookAt:=xlPart, SearchOrder:=xlByRows
        'ETC.....
    ' Dar formato de hipervínculo a las celdas A6 y A10
 'descomentar la parte indicada entre puntos:
    '-----------------------------------------------------------
    '.Range("A6,A10").Select
    'With Selection
    '.Font.Color = RGB(0, 0, 255)
    '.Font.Underline = xlUnderlineStyleSingle
    'End With
    '-----------------------------------------------------------
    End With
    'Publicamos en PDF, sin propiedades en el documento y sin abrir cada vez que se genere el PDF
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            ruta & "\" & ActiveSheet.Name, Quality:=xlQualityStandard, _
            IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
    'Volvemos a renombrar la hoja12 como "GENERAR"... EM: utilizar nombres o variables, no nros.
    ActiveSheet.Name = "GENERAR"
Next
'EM: al finalizar se quedó en hoja GENERAR
End Sub

Sdos!

Respuesta
1

Hol.a

Según tu propio código, la hoja activa es la que se convierte en pdf.

Abraham Valencia

Muchas gracias por responder .. lo que sucede que en el código donde sale "DATOS" se selecciona esa hoja con ese nombre lo que yo necesito es que se pueda con cualquier hoja

Pues no es necesario seleccionar una hoja para convertirla en pdf (ni para trabajar con ella en general) así que basta que reemplaces, en la línea correspondiente, el "Activesheet" por el nombre de tu hoja:

Sheets("Nombre_de_la_hoja").ExportAsFlxedFormat...

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas