Saltar al contenido

guardar hoja activa de excel en pdf


Recommended Posts

publicado

Buenas amigos del foro

Tengo la siguiente macro que me funciona bien pero no me guarda o imprime el pdf con el nombre de la celda ai1, me podrían ayudar.

Ademas me gustaría indicarle donde guardarlo, pero ya para mi eso es muy profundo.

Les agradezco su valiosa ayuda

[/code]Sub SavePDF()

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, ActivePrinter:="Nitro PDF Creator"

Dim filename As String

filename = Range("ai1").Value

End Sub[/code]

publicado

Buenas, Darkshadow

No te guarda nada porque no existe nada en tu código que se lo diga.

Tu "Filename" es para él una variable, que seguramente sí recoge el valor que deseas......pero posteriormente deberías utilizar dicho valor para la línea donde grabarlo.

Algo, por ejemplo, del tipo:



ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=
_ "[COLOR=#0000ff]aquí pones la ruta completa donde quieres guardarla con su nombre[/COLOR].pdf"

[/CODE]

Mira a ver si así te vale..

Un saludo,

Tese

publicado

ME SIRVIO A LA PERFECCION PERO NO PUEDO HACER QUE GUARDE EN DONDE NECESITO.

LO MODIFIQUE Y ME QUEDO ASI:

[/CODE]Sub Macro3()
Dim ruta As String
Sheets("FOTOGRAFICO").Select
ruta = Range("AI1") 'En esta celda pondrás la ruta en donde quieres guardar el archivo
Sheets("FOTOGRAFICO").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=ruta & ActiveWorkbook.Name, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub[CODE][/CODE]

TE AGRADECERIA ESTA ULTIMA AYUDA

[color=blue]- - - - - Mensaje combinado - - - - -[/color]

EL SI ME GUARDA PERO ME GUARDA EN MIS DOCUMENTOS

publicado

El problema va a estar en la variable "ruta" y en lo de ActiveWorkbook.Name............pues ese supuesto archivo tendría como extensión ".xls" y no ".pdf" como debería ser en base al tipo de archivo que estás exportando.

Aunque te inventes algo de la ruta.........¿podrías decirme cuál es el valor de tu casilla "AI1"?

Un saludo y tranquilo.........que estamos cerca.......jejejej

Tese

publicado

Bueno en ese momento por la prisa de irme del trabajo puse el còdigo a la volada.... ahora si bien es cierto puede hacerse unas pequeñas mejoras....

no te adjunto el archivo porque ya lo tienes ..., pero si te pongo el còdigo ... puedes usarlo como referencia ....

Antes de ello, te recomiendo que para la exportaciòn al PDF, en la hoja que vayas a exportar.... le des el formato como àrea de impresiòn, márgenes, y todo lo demás .... ya puedes usar ello como plantilla y simplemente ejecutas la macro....



Sub Converte_PDF()
Dim ruta As String, nombre As String
ruta = Sheets("Hoja2").Range("A2").Value 'En esta celda pondrás la ruta en donde quieres guardar el archivo
nombre = Sheets("Hoja2").Range("B2").Value 'En esta celda se pondra el nombre del archivo deseado, incluso puedes usar alguna fòrmula

ruta = ruta & nombre & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

[/CODE]

Aunque no hay mas que decir ... que las celdas puedes poner las rutas y si gustas puedes hacer ello en la misma macro indicando lo siguiente:

[CODE]
' Con esto puedes indicar la ruta en donde guardará el archivo sin necesidad de usar celdas....
ruta = "E:\Mis Documentos\eBooks\Excel\"
' No olvidar de poner el "\" al final (alt + 92) porque si no te dará error

[/CODE]

Con respecto al nombre tienes infinidad de modos para el nombre:

* la primera es tomando el valor de una celda en particular....

* usar formulas aplicadas a las mismas variables

* indicar el nombre como se hizo par la ruta

* etc, etc

Espero que te haya sido de ayuda... y tal vez a darte mas ideas....

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.