Autoguardar

Deseo guardar una hoja en un directorio determinado en el mismo momento de su apertura y que me solicite el nombre con el que quiero guardarla, y por supuesto seguir trabajando con ella.
¿Es posible?

1 respuesta

Respuesta
1
Si claro, es posible.
Primero deberás activar el editor de Visual Basic (Alt+F11)
A la derecha de la pantalla, busca la carpeta ThisWorkbook (o "EsteLibro" en otras versiones).
De los dos menués descolgables superiores elige "Workbook" en el de la izquierda y "open" en el de la derecha (con esto le indicas a MS Excel que al abrir el archivo ejecute las instrucciones que encuentre aquí)
Al hacerlo, aparecerá escrito lo siguiente:
Private Sub Workbook_Open()
End Sub
Luego deberás copiar entre ambas lineas, las siguientes lineas de código:
- Opción A (Ingresa directorio y nombre de archivo a petición del sistema en ventanas de diálogo, como lo solicitas)
Dim ActDIR, newDir, newFile As String
ActDIR = CurDir
newDir = InputBox("PROCEDIMIENTO DE GRABACION INICIAL: 1.- Ingrese Directorio", "Paso 1 de 2 (DIRECTORIO)", ActDIR)
newFile = InputBox("PROCEDIMIENTO DE GRABACION INICIAL: 2.- Ingrese Nombre de Archivo:", "Paso 2 de 2 (ARCHIVO)")
If newFile <> "" Then
If Right(newDir, 1) = "\" Then
newFile = newDir + newFile
Else
newFile = newDir + "\" + newFile
End If
ThisWorkbook.SaveAs FileName:=newFile
MsgBox "GUARDADO como " & newFile
Else
MsgBox "Este archivo NO fue guardado"
End If
- Opción B (Muestra una ventana de navegación cómo la de "Guardar como..." para elegir el directorio e ingresar el hombre de archivo. Prefiero esta)
fileSaveName = Application.GetSaveAsFilename(InitialFilename:="CAMBIAR", FileFilter:="Libro de Microsoft Excel (*.xls), *.xls", Title:=">>>>>>> Guarde antes de empezar <<<<<<<")
If fileSaveName <> False Then
ThisWorkbook.SaveAs FileName:=fileSaveName
MsgBox "GUARDADO como " & fileSaveName
Else
MsgBox "Este archivo NO fue guardado"
End If
Cierra el editor y graba el archivo.
Cualquiera fuese la opción que elijas en ambas te informará si grabó el archivo y con qué nombre.
Inténtalo y coméntame. Lo probé y funciona bien.
Un abrazo!
Fernando
Hola Fernando:
Tu respuesta perfecta, no obstante me gustaría una pequeña aclaracióm:
Es posible que en vez de solicitar el directorio donde se quiere guardar lo hagamos ya desde VB, es decir, en una línea de VB poner el directorio donde se tiene que guardar la hoja.
Un saludo.
José A.
Recién vuelvo del fin de semana y vi tu pregunta.
La macro que sigue no solicita el path al usuario, sino que deberá estar incluido en el mismo código. Reemlaza el que te mandé antes con este:
Dim ActDIR, newDir, newFile As String
ActDIR = CurDir
'== Jose: reemplaza aquí el directorio donde debe ser guardado el archivo:
newDir = "C:\Mis documentos\Jocavare\"
'==============
newFile = InputBox("PROCEDIMIENTO DE GRABACION INICIAL: 1.- Ingrese Nombre de Archivo:", "Paso 1 de 1 (ARCHIVO)")
If newFile <> "" Then
If Right(newDir, 1) = "\" Then
newFile = newDir + newFile
Else
newFile = newDir + "\" + newFile
End If
ThisWorkbook.SaveAs FileName:=newFile
MsgBox "GUARDADO como " & newFile
Else
MsgBox "Este archivo NO fue guardado"
End If
Bueno, José, espero que así este bien.
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas