Como Guardar un libro con un dato de Formulario VBA EXCEL

Tengo un archivo llamado "Libro1" con un formulario de ingreso de datos y un consecutivo de ingreso arriba de lado derecho, que se actualiza cada que se hace un ingreso y al darle en el botón "Procesar" me pasa los datos ingresados del formulario al "Libro2" que tiene formato para hacer una impresión y guardarlo, pero al abrir la ventana de "GUARDAR COMO" el "Nombre del archivo" me aparece en blanco, y necesito que me abra la ventana de "GUARDAR COMO" y aparezca en automático el Consecutivo de Ingreso que aparece en el formulario y con extensión .pdf ya que la ruta de guardado no siempre sera la misma.

El siguiente código lo ocupo para que imprima el archivo y me lance la ventana de "GUARDAR COMO" pero sin Nombre

. Worksheets("Hoja1").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False

Y este otro me imprime y guarda el archivo con el consecutivo pero sin abrir la ventana de "GUARDAR COMO" en mis documentos.

'.Worksheets("Hoja1").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, FileName:= _
 Me.Consecutivo.Caption & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:= _
 True, IgnorePrintAreas:=False, OpenAfterPublish:=True

2 respuestas

Respuesta
1

Te anexo el código para guarda como

Private Sub CommandButton1_Click()
'Por.Dante Amor
    'Imprimir hoja
    Worksheets("Hoja1").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    '
    'Guardar archivo como pdf
    ruta = ThisWorkbook.Path & "\"
    'nombre del archivo con el consecutivo de tu etiqueta
    arch = Me.Consecutivo.Caption & ".pdf"
    With Application.FileDialog(msoFileDialogSaveAs)
        .Title = "Guardar archivo como"
        .AllowMultiSelect = False
        .InitialFileName = ruta & arch      'nombre de archivo inicial
        .FilterIndex = 25                   'para guardar como pdf
        If .Show Then
            'en la variable march se almacena la ruta,
            'el nombre que le pongas al archivo y la extensión pdf
            march = .SelectedItems(1)
            Sheets("Hoja1").ExportAsFixedFormat Type:=xlTypePDF, _
                Filename:=march, _
                Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, OpenAfterPublish:=False
            MsgBox "Se guardó el archivo pdf con el nombre: " & march
        End If
    End With
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Feliz Año 2018

.

Amigo gracias por tu respuesta, el código que me hiciste favor de proporcionarme si abre la ventana de guardar como y en el nombre del archivo me pone "Consecutivo.PDF" solo que al darle "GUARDAR" me salta un error, y no entendí a un 100% el error, podrías apoyarme por favor?

Gracias

¿Y qué dice el mensaje de error?

Qué dato tienes en Me.NC_Numero?

Cómo se llama la hoja que vas a enviar a PDF, ¿se llama "Hoja1"?

El error que me marca es este

Se ha producido el error '9' en tiempo de ejecución:
Subindice fuera del intervalo

En el "Me.NC_Numero" es un Label con "No. y consecutivo".

Y la hoja que envío a PDF si se llama "Hoja1" y que se encuentra en un archivo adicional en la misma carpeta llamado "Nota_tmp"

¿Cómo qué en un archivo adicional?

La "Hoja1" debe estar en el mismo archivo donde estás ejecutando la macro.

No estás poniendo tu macro completa, por eso no puedo descifrar los problemas.

Al principio de tu macro tienes esto:

. Worksheets("Hoja1"). PageSetup. PrintArea = "aNota"

Si te das cuenta, estás poniendo un punto (.) Antes de Worksheets, eso significa que estás haciendo referencia a algo, pero no se ve en tu imagen.

Puedo resolverlo sin mirar, agrega esta línea después de esto:

.worksheets("Hoja1").PageSetup.PrintArea = "aNota"
set h1 = .Worksheets("Hoja1")

Ahora cambia esta línea:

Sheets("Hoja1").ExportAsFixedFormat Type:=xlTypePDF, _
                Filename:=march, _
                Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, OpenAfterPublish:=False

Por esta:

h1.ExportAsFixedFormat Type:=xlTypePDF, _
                Filename:=march, _
                Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, OpenAfterPublish:=False

.

'S aludos. Dante Amor. Recuerda valorar la respuesta.

Muchas gracias amigo, en verdad, me funciono con las nuevas correcciones que me proporcionaste.

Y el proyecto que estoy realizando únicamente estan visibles los formularios ocultando todo el libro " el código que utilizo me ocultan todos los libros abiertos" y el archivo adicional es un formato en el cual cuando le doy clic en el botón de procesar del formulario, me manda los campos a ese archivo adicional para realizar el guardado en PDF. 

Muchas gracias nuevamente, un abrazo.

Respuesta
1

Aunque no lo escribes, por lo que mencionas por lo visto usas:

Application.Dialogs(xlDialogSaveAs).Show

En realidad si lo que quieres es dar el nombre de modo directo, debes usar:

ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "nombrenuevodemiarchivo.xlsx"

Solo debes reemplazar la ruta (yo he usado la misma del archivo "ThisWorkBook.Path") y el nombre.

Comentas

Abraham Valencia

Amigo lamentablemente no me funciono, con el código que coloque al principio me hace el proceso Guardar Impresión como "que es lo que necesito", pero en el Nombre del archivo aparece en blanco y eso es lo que quiero que aparezca el No. de nota de lado derecho arriba y sea un .PDF.

.Worksheets("Hoja1").PageSetup.PrintArea = "aNota" 'Es el rango que le asigne en el libro2 para la imprecion
.Worksheets("Hoja1").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False

Saludo.

Viendo tu captura de pantalla se aprecia que en realidad no estás usando el diálogo "Guarda Como" tal como expresaste en tu primer mensaje. Al parecer estás usando alguna de estas opciones:

- Tienes activada la herramienta "Imprimir a un archivo" (y quizá con una impresora PDF como activa)

- Tienes activa y/o predeterminada y/o eliges la impresora virtual "Microsoft Print to PDF" (o similar).

De no ser alguna de esas opciones igual se aplica lo siguiente: En ambos casos los cuadros de dialogo tienen el "nombre" vacío y no hay forma de colocar ahí un texto de manera automática a través de variables, puedes hacer el intento con "SendKeys" pero no necesariamente dará los resultados esperados.

¿Tu intención es simplemente guarda como PDF? De ser así, a partir de Excel 2007, hay una opción para lograrlo "directamente" (incluido VBA) ¿O es otro tu dilema?

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas