Crear botón para guardar un archivo

Tengo un libro de excel (llamado plantilla) que usamos como plantilla, lo vamos rellenando de datos cada día y lo grabamos con diferentes nombres a fin de dejar la "plantilla" en blanco para el siguiente día.
Me gustaría saber si se puede poner un botón llamado FIN que al darle salga un inputbox que nos diga "Está seguro de haber rellenado correctamente la plantilla" y existan dos botones SI y NO. Si le das a NO vuelva a la plantilla para dejarte trabajar y ...
... Si le das a SI te guarde el archivo con el nombre de "PLANTILLA y la fecha del día" en una carpeta del escritorio "C:\Documents and Settings\Administrador\Escritorio\Plantillas" y que te cierre el libro (llamado plantilla) dejandotelo en blanco para poder usarlo al día siguiente.
Me lo podrías explicar de forma sencilla.
Respuesta

Yo quiero hacer lo mismo pero en lugar de que me guarde siempre con ese nombre me pregunte el nombre y además transforme en pdf el archivo, solo me interesa una hoja !

1 respuesta más de otro experto

Respuesta
2
Como estaba un poco ocioso te he hecho una videoayuda con los pasos que tienes que dar :)
Como no has dicho que versión de Excel tienes, te lo he hecho con Excel 2003.
Aquí esta el video:
http://goo.gl/ePPE6
El código de la macro es este:
Sub Fin()
  Const CTE_CARPETA = "C:\Documents and Settings\Administrador\Escritorio\Plantillas\"
  If MsgBox("¿Está seguro de haber rellenado correctamente la plantilla?", vbQuestion + vbYesNo) = vbYes Then
    ActiveWorkbook.SaveAs CTE_CARPETA & "PLANTILLA-" & Format(Now, "dd-mm-yyyy") & ".xls"
    MsgBox "Se ha guardado correctamente.", vbInformation
  End If
End Sub
Y te he dejado aquí el ejemplo que he utilidado Plantilla.xls por si quieres verlo:
http://goo.gl/vYPyT
Increíble, me he quedado alucinado con el video.
Mil gracias, en realidad tengo excel 2010 pero me ha servido perfectamente.
Solo una duda, es posible que cuando se guarda y te sale el inputbox que dice "Se ha guardado correctamente" al darle aceptar se cierre el excel.
Mil gracias.
Me alegra que te guste, me llevo mi tiempo XD, pero fue divertido ;)
Si quieres cerrar el libro después de generarlo, solo tienes que añadir una linea. Te pongo nuevamente la función y en negrita la linea.
Sub Fin()
  Const CTE_CARPETA = "C:\Documents and Settings\Administrador\Escritorio\Plantillas\"
  If MsgBox("¿Está seguro de haber rellenado correctamente la plantilla?", vbQuestion + vbYesNo) = vbYes Then
    ActiveWorkbook.SaveAs CTE_CARPETA & "PLANTILLA-" & Format(Now, "dd-mm-yyyy") & ".xls"
    MsgBox "Se ha guardado correctamente.", vbInformation
    'Esto cierra el lbro
    ActiveWorkbook.Close
  End If
End Sub
Saludos,
[email protected]
Muchas gracias por contestar tan rápido.
La función "ActiveWorkbook.Close" me cierra el libro en el que estoy trabajando, pero no me cierra todo el excel.
He probado la función "Application. Quit" que funciona pero antes de cerrar el libro me pregunta si quiero guardar los cambios efectuados en la Plantilla.
Existe alguna función que me cierre totalmente excel (no solo el libro) y no me pida si quiero guardar cambios de la plantilla.
Muchas gracias.
Es raro lo que me dices, porque en tu plantilla no hay cambios que guardar, ya que acabamos de hacer "ActiveWorkbook.SaveAs", por lo tanto los cambios ya están guardados.
Repasemos lo que estamos haciendo:
1. Abrimos la plantilla original "Plantilla.xls"
2. Guardamos "Plantilla.xls" con otro nombre "PLANTILLA-FECHA.xls", en este momento la plantilla original ya no está abierta en excel, y el único libro que debería estar abierto en Excel es "PLANTILLA-FECHA.xls"
3. Si ahora pones "Application.Quit", esta sentencia intenta cerrar excel, pero si tienes algún libro sin guardar te preguntará si quieres guardar los cambios, aunque este no debe ser tu caso, a no ser que tengas otro libro abierto del que no hemos hablado :)
Así que si lo que quieres es cerrar Excel completamente, como bien dices con Application. Quit debería ser suficiente.
Pero mira a ver si te interesa esta opción, es demasiado "peligrosa" desde mi punto de vista, ten en cuenta que el usuario podría tener sus propios libros abiertos y al ejecutar "Application.Quit" se los estarías intentando cerrar...
No obstante, si te interesa cerrar excel, sin que te pregunte y por lo tanto perdiendo los cambios que hayas hecho en otros libros que tuvieras abiertos, me dices y te cuento cómo... pero como te digo, esto me parece un poco peligroso :)
Ocurre lo que te cuento solo con el excel plantilla en marcaha.
Te pongo la macro por si hay algún error:
Sub Fin()
  Const CTE_CARPETA = "C:\Documents and Settings\Administrador\Escritorio\Plantillas\"
  If MsgBox("¿Está seguro de haber rellenado correctamente la plantilla?", vbQuestion + vbYesNo) = vbYes Then
    ActiveWorkbook.SaveAs CTE_CARPETA & "PLANTILLA-" & Format(Now, "dd-mm-yyyy") & ".xls"
    MsgBox "Se ha guardado correctamente.", vbInformation
    Application.Quit
  End If
End Sub
Cuando al botón FIN le doy primero me pregunta "Está seguro de haber rellenado correctamente la plantilla?" si le digo SI me sale otro inputbox que dice "Se ha guardado correctamente" y un botón de aceptar. Si lo he entendido bien al darle aceptar debería desaparecer el excel, pues ya está guardado. Pues esto no sucede me sale un inputbox que me dice "Desea guardar los cambios efectuados en PLANTILLA-Fecha.xls?" y aquí da lo mismo si le dices si o no ya que ya me los ha guardado.
¿Existe alguna forma de quitar este último inputbox?
Mil gracias.
Uff, reconozco que soy incapaz de reproducir lo que te sucede en mi Excel.
A mi me cierra Excel sin hacerme la última pregunta "Desea guardar los cambios efectuados en PLANTILLA-Fecha.xls?"
Se me ocurre que podrías probar esto:
Sub Fin()
  Const CTE_CARPETA = "C:\Documents and Settings\Administrador\Escritorio\Plantillas\"
  If MsgBox("¿Está seguro de haber rellenado correctamente la plantilla?", vbQuestion + vbYesNo) = vbYes Then
    ActiveWorkbook.SaveAs CTE_CARPETA & "PLANTILLA-" & Format(Now, "dd-mm-yyyy") & ".xls"
    MsgBox "Se ha guardado correctamente.", vbInformation
    ThisWorkbook.Saved = True
    Application.Quit
  End If
End Sub
Que más o menos es como decirle que ya está todo guardado y que no tiene que preguntar.
Mil gracias por todo.
Creo que lo del mensaje final de guardar debe ser algo de la configuración de mi plantilla, ya que si la abro no escribo nada y la cierro, también me sale el mismo inputbox.
No quiero marearte más con esta cuestión. Has sido muy amable y te agradezco muchísimo el tiempo que me has dedicado y tus didácticas respuestas.
Me tomaré el lujo de ponerte en mis favoritos y marearte un poco más con otras dudas.
MIL Gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas