Macro que abra el explorador y guarde el archivo

Tengo esta macro que funciona bien:

Dim fName As String   'variable que guardará el nombre del txt
Dim ruta As String    'variable que guardará la ruta

fName = "LE" + lbl1 + lbl3 + lbl2 + "00080200001011"
ruta = ThisWorkbook.Path & "\" + fName + ".txt"

Open ruta For Output As #1
Print #1, ""
Close #1

MsgBox "Archivo Generado con Éxito..!!"

Lo que deseo es modificar o agregar el código para que se abra el explorador (windows) con el nombre del archivo para solo buscar la ruta o carpeta en donde guardarla.

1 respuesta

Respuesta
1

Según entiendo, quieres que se abra la caja de Dialogo de Windows que te pide seleccionar una ruta. Si entendí bien, lo único que tienes que hacer es agregar esta variable:

Dim sCarpeta As String

y luego mas abajo sustituir tu linea: ruta = ThisWorkbook.Path & "\" + fName + ".txt"

Con el siguiente código:

With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = "C:\Windows\"
        .ButtonName = "Seleccionar"
        If .Show = -1 Then
            sCarpeta = .SelectedItems(1)
        End If
    End With
    If sCarpeta <> "" Then
        ruta = sCarpeta & "\" & fName & ".txt"
    End If

Las propiedades .InitialFileName y .ButtonName son opcionales

El primero es para establecer una carpeta por defecto que aparecerá siempre y ahorrarle un pedazo de ruta al usuario. El segundo es el texto que quieres que aparezca en el botón, si lo borras se pondrá el texto de Windows por defecto.

Ahora bien, un consejo, en VBA el simbolo + es un operador, no se usa para concatenar, para concatenar debes usas &.

Si bien es cierto que el + puede dar la ilusión de concatenación, en realidad lo que intenta hacer es sumar.

Andy M.

Gracias por responder Estimado Andy, creo que me exprese mal, lo que requiero es que se abra la ventana "guardar como" con el nombre ya especificado con la variable fName y el tipo de archivo txt para solo seleccionar la carpeta en donde guardar. Gracias de antemano.

Eso es lo que hace el código. Abre la ventana para seleccionar la carpeta. ¿Lo has probado?

Si lo probé, pero no abre la ventana de "Guardar Como", abre  la ventana del explorador y en ella no esta el botón Guardar.

Es igual man, cambia:

. ButtonName = "Seleccionar"

cambia "Seleccionar" por la palabra "Guardar" y listo.

El problema que si abres la ventana "Guardar como", le das al usuario la posibilidad de cambiar el nombre, supuse que el nombre del archivo no se puede cambiar ya que lo estas definiendo en la linea: fName = "LE" + lbl1 + lbl3 + lbl2 + "00080200001011"

Pero si tu quieres dejar que el usuario pueda cambiar el nombre, me avisas y te doy el código.

Esta seria la macro:

Sub ellobaso()
Dim fName As String   'variable que guardará el nombre del txt
Dim ruta As String    'variable que guardará la ruta
fName = "LE" + lbl1 + lbl3 + lbl2 + "00080200001011"
    Application.DefaultFilePath = ThisWorkbook.Path
    fileSaveName = Application.GetSaveAsFilename( _
        InitialFileName:=fName, _
        fileFilter:="Text Files (*.txt), *.txt") _
    If fileSaveName <> False Then
        ruta = fileSaveName
        Open ruta For Output As #1
        Print #1, ""
        Close #1
        MsgBox "Archivo Generado con Éxito..!!"
    End If
End Sub

Andy M.

¡Gracias!  estimado Andy , ahora si corre  a lo deseado, solo un detalle más, en la instrucción Print #1,""  imprime en el bloc de notas una línea en blanco y no quisiera que fuese así, tan solo que el archivo txt (bloc Notas) esté completamente vació, cual sería la modificación..Gracias por la comprensión

Así lo tenias en tu código, por eso lo puse. Solo tienes que borrarlo. Borra las 3 líneas

Open ruta For Output As #1
Print #1, ""
Close #1

Andy M.

Borrando las 3 líneas, no genera o crea el archivo de texto, es decir no se guarda nada, quizás otra sea la modificación. Gracias

Si disculpa, eso lo respondí desde el celular, ahora en la compu me doy cuenta solo tienes que borrar la línea:

Print #1, ""

Deja las otras dos. Es que yo no uso ese método para crear TXT

¡Gracias!  Andy, ahora si lo genera en blanco, tan fácil como eso..!! Puedo hacerte otra consulta que no es del tema o tengo que abrir una nueva pregunta. Gracias por tu comprensión.

A mi me da igual, pero creo que seria mejor para la comunidad que abras una nueva pregunta y yo estaré pendiente para leerla o puedes hacérmela como pregunta privada desde mi perfil. No olvides calificar esta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas