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 de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
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