Guardar y cerrar libros

17 respuestas [Último envío]
Rubén
Imagen de Rubén
Offline
alta: 02/08/2007
Puntos: 191
Buenas tardes, de nuevo apelo a tus conocimientos. Me gustaría saber tres cuestiones bien sencillas (o eso creo): 1. Comando que debo meter a un CommandBotton para guardar un Excel pero no salir. 2. Lo mismo para "Guardar como". 3. Lo mismo para imprimir el libro completo. Muchas gracias de antemano. Tus aportaciones siempre me sirven de mucho. Saludos. Rubén.
pacomegia
Imagen de pacomegia
Offline
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 27/12/2006
Puntos: 4000
Re: Guardar y cerrar libros
Hola Rubén: para guardar un libro sin salir de Excel, emplea el método Save del libro por ejemplo: ActiveWorkbook.Save Si le quieres cambiar el nombre al libro, emplea el método SaveAs, guardar como. por ejemplo: ActiveWorkbook.SaveAs Filename:=NombreArchivo Puedes preguntar al usuario el nombre a dar al archivo mediante Application.GetSaveAsFilename Para cerrar el libro sin salir de Excel, el método Close. Puedes indicar si guarda los cambios o no: ActiveWorkbook.Close SaveChanges:=True Por último, para imprimir todas las hojas del libro, emplea el método PrintOut del libro: ActiveWorkbook.PrintOut En todos estos ejemplos he utilizado el libro activo, pero puedes aplicarlo a cualquier objeto tipo libro (Workbook). Espero haber resuelto tu duda con esto.

envios gratis a todo el mundo

Rubén
Imagen de Rubén
Offline
alta: 02/08/2007
Puntos: 191
muy útil
Tus aportaciones me resultaron de gran ayuda. Muchas gracias.
Rubén
Imagen de Rubén
Offline
alta: 02/08/2007
Puntos: 191
SaveAs
Estoy intentando utilizar el método SaveAs pero al llevarlo a la práctica no me funciona. Lo que intento hacer es poner varios botones a lo largo de un programa, que me den la opción de "Guardar como" el Excel. Además, me gustaría usarlo en dos casuísticas distintas: Después de guargar, no cierre el programa, y después de guardar, sí cierre el programa. Espero haber sido claro en la descripción del problema. Muchas gracias, como siempre.
pacomegia
Imagen de pacomegia
Offline
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 27/12/2006
Puntos: 4000
SaveAs no muestra el cuadro de diálogo
El método SaveAs guarda el libro con el nombre que le indiques como argumento, pero no hace que aparezca el cuadro de diálogo guardar como, para que el usuario pueda elegir cómo guardarlo. Para que sea el usuario quien elija, debes emplear el método Application.GetSaveAsFilename Con éste método se muestra el cuadro de diálogo y obtienes una cadena de texto con la ruta y el nombre del archivo que indique el usuario, que luego puedes utilizar como argumento del método SaveAs Es decir, primero preguntas por el nombre del archivo y después guardas con ese nombre. Por último, en otro paso más, después de haber guardado, tendrás que cerrar o no el libro y el programa según lo que necesites.

envios gratis a todo el mundo

Rubén
Imagen de Rubén
Offline
alta: 02/08/2007
Puntos: 191
Madre mía...
Madre mia, el SaveAs and cia me están dando unos buenos quebraderos de cabeza... No soy capaz de poder introducir el código certero al commandbotton para que me "guarde como". En el mejor de los casos consigo que me pida un nombre, pero me lo guarda con el mismo que tenía. ¿Sería alguien tan amable de decirme exactamente que es lo que tengo que teclear y en que orden? Parece que estoy un pelín torpe con este asunto y ahora mismo es la única solución que se me ocurre. Lo siento por estar un poco espeso en este caso. Muchas gracias de antemano. Saludos.
Rubén
Imagen de Rubén
Offline
alta: 02/08/2007
Puntos: 191
¡ Lo conseguí !
Bueno, ya conseguí la opción "Guardar como" al hacer el evento click en un command button. Para que quede claro a todos: Private Sub CommandButton1_Click() ChDir "C:" ActiveWorkbook.SaveAs Filename:= _ Application.GetSaveAsFilename, FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False End Sub Muchas gracias por todo.
pacomegia
Imagen de pacomegia
Offline
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 27/12/2006
Puntos: 4000
ChDir
Bueno, veo que he llegado tarde a contestarte y que ya has conseguido que funcione. me ha extrañado lo de establecer el directorio en C: ChDir "C:" ¿es necesario esto para que funcione, o es por otro motivo?

envios gratis a todo el mundo

Rubén
Imagen de Rubén
Offline
alta: 02/08/2007
Puntos: 191
Otro modo de hacerlo
La verdad es que puede que tengas rezón y no sea necesario. Lo puse porque el procedimiento que he seguido es el de grabar macro, y al ver el código que me había guardado, allí estaba. Luego retoqué un poco el código y funcionaba perfectamente. Otra forma distinta de hacerlo y quizá mejor es la siguiente: Dim dlgSave As FileDialog Set dlgSave = Application.FileDialog(msoFileDialogSaveAs) dlgSave.Show dlgSave.Execute Un saludo.
visitante
Imagen de visitante
Pregunta

HOla una consulta porque cuando trato deutilizar getsaveasfilename me muestra el mensaje "No se puede efectuar esta accion porque la otra aplicacion esta ocupada"..

Gracias por la respuesta!

pacomegia
Imagen de pacomegia
Offline
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 27/12/2006
Puntos: 4000
Re: Pregunta

no sé qué puede ser esa otra aplicación.

¿hay alguna otra instancia de Excel abierta?

¿ocurre siempre o sólo en algunos casos?

------
Ya sé Excel, pero necesito más ahora en pdf

envios gratis a todo el mundo

Cron
Imagen de Cron
Offline
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010
Puntos: 4178
Re: ¡ Lo conseguí !

Pregunto, por preguntar:

¿Por qué utilizas como comando de asignación el símbolo ":="?

Quiero decir, ¿No funciona igual sin utilizar los dos puntos?

El símbolo := lo conozco de Pascal, pero en Basic siempre utilicé = a secas.

 

Gracias

pacomegia
Imagen de pacomegia
Offline
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 27/12/2006
Puntos: 4000
Re: ¡ Lo conseguí !

pues la verdad es que yo también utilizo sólo el =, así que supongo que lo copié de algún lado y no me di ni cuenta.

supongo que de alguna macro grabada, ya que el grabador de macros sí emplea este símbolo

------
Ya sé Excel, pero necesito más ahora en pdf

envios gratis a todo el mundo

eduboca82
Imagen de eduboca82
Offline
alta: 05/12/2007
Puntos: 90
Re: Guardar y cerrar libros
Buenas Tardes!! Estoy utilizando la funcion de save as pero la duda que tengo es como hago para que ese archivo se guarde directamente en una carpeta de mi unidad C:\ y que el nombre del archivo sea igual al de una celda (Ej: =A1) de la hoja. Muchas gracias. Edú
Edú
pacomegia
Imagen de pacomegia
Offline
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 27/12/2006
Puntos: 4000
a ver si esto...
Utiliza el valor de la celda A1 como argumento. por ejemplo, suponiendo que la celda A1 se encuentra en la hoja activa: ActiveWorkbook.SaveAs "C:\" & Range("A1").Value El nombre del archivo se compone de la parte que indica la ruta, en este ejemplo C:\ seguida del valor de la celda.

envios gratis a todo el mundo

eduboca82
Imagen de eduboca82
Offline
alta: 05/12/2007
Puntos: 90
Re: a ver si esto...
Muchisimas gracias.. si funciono... ahora te molesto porque quiero que el archivo se guarde con referencia a una celda que tiene una fecha. ¿Como hago para que quede el nombre del archivo & la fecha? Saludos!! Edú
Edú
pacomegia
Imagen de pacomegia
Offline
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 27/12/2006
Puntos: 4000
da formato a la fecha
Utiliza la función format para dar formato al valor de la celda Por ejemplo, para guardar un archivo en C:\ (como en el caso anterior) y que el nombre del archivo tenga un aspecto como este 20071210.xls (año, mes y día), y suponiendo que esa fecha está en la celda A1: ActiveWorkbook.SaveAs "C:\" & Format(Range("A1").Value, "yyyymmdd") La cadena para el formato está en inglés, y de year año, m month mes, d day día. En la ayuda de Excel parece que se puede poner en español, pero no es así, VBA no está traducido.

envios gratis a todo el mundo

visitante
Imagen de visitante
Re: da formato a la fecha

Estimado,

La fecha se puede colocar como uno quiera, "ddmmyy" o "ddmmyyyy" o "yymmdd"

Saludos.