¿Alguna macro para autoguardar un libro de Excel?


Tratare de explicar lo más claro posible mi pregunta.
Tengo un libro de Excel el cual quiero que cada vez que presione o botón guardar (no es obligatorio que sea este botón, puede ser cualquier otro o una combinación de teclas) me guarde una copia exacta del archivo actual pero que el nombre sea lo que se encuentra en la celda b7+d15+e15 espero sea posible realizar esto.

1 Respuesta

Respuesta
1
Es bastante sencillo, bastaría esta macro asignada a un botón llamado "Guardar"
Private Sub guardar_Click()
F = Sheets(1).Range("B7").Value + Sheets(1).Range("d15").Value +_
      Sheets(1).Range("e15").Value
ActiveWorkbook.SaveAs F
End Sub
F es una variable cadena. Se supone que de su composición va a salir la ruta y nombre completos del fichero. Si no estuvieran los "\" o el ":" o el ".xls" deberías incluirlos tu en la línea en el lugar adecuado.
Por ejemplo:
Si B7 tiene "C"
D15 tiene "MisDatos"
E15 tiene "Datos1"
Y queremos que el fichero guardado sea
C:\MisDatos\Datos1.xls
la línea sería
F = Sheets(1).Range("B7").Value + ":\" + Sheets(1).Range("d15").Value +_ 
      "\" + Sheets(1).Range("e15").Value + ".xls"
Y eso es todo. Espero que te sirva. No olvides puntuar la pregunta.
Gracias por tu pronta respuesta.
Coloque el código que me pusiste pero no me resulto nada.
Me gustaría que el archivo se guarde en la misma carpeta donde tengo el archivo original en este caso la carpeta se llama Excel, creo que mi error esta en la parte de la cadena que comentas, no entendí muy bien esa parte.
Espero me puedas ayudar con estas dudas, Gracias.
Veamos a ver. Pones la hoja en modo diseño y añades un botón, llamalo "Guardar" si quieres. Haces doble clic sobre él y te aparece el editor de Visual basic con la subrutina donde debes escribir (copiar) las dos lineas internas de lo que he escrito. Vuelves a la hoja de cálculo y sales del modo edición y ya podrías usar el botón.
Fíjate bien que la línea F = Sheets(1)... tiene un signo "_" al final, eso es porque la siguiente línea es continuación, no olvides poner ese signo.
Bueno, casi mejor que uses esta otra macro y menos lio:
Private Sub Guardar_Click()
   Dim F As String
   F = Sheets(1).Range("B7").Value
   F = F + Sheets(1).Range("D15").Value
   F = F + Sheets(1).Range("E15").Value
   ActiveWorkbook.SaveAs F
End Sub
Para conocer mejor lo que quieres necesitaría saber que va a haber en las casillas B7, D15 y E15. Asimismo saber dónde está esa carpeta que llamas Excel, ¿en el escritorio, en mis documentos, etc? E incluso para dejarlo todo hecho el nombre de usuario y sistema operativo que usas.
En tu caso podrías hacer:
B7 = C:\
D15 = Documents and settings\nombre usuario\escritorio\excel\
e15 = nombre fichero.xls
Pero si lo vas a guardar siempre en el mismo sitio e incluso con el mismo nombre no veo la utilidad de usar tres casillas de la hoja para formar el nombre. Podrías simplemente poner esta sola linea en la macro
ActiveWorkbook.SaveAs "C:\Documents and settings\nombre usuario\escritorio\excel\nombre fichero.xls"
Creo que lo mejor es que te decidas tu a tomar el control total de la situación y entonces lo único que debes saber es que la orden para el guardado es:
ActiveWorkbook. SaveAs F
Y lo demás lo dejas a tu gusto.
Espero que lo entiendas y te funcione, a mí si me funciona.
Creo que no me explique bien espero ahora lo logre.
La carpeta esta en  el escritorio  esta es la ruta C:\Users\Ivan I. Escalante\Desktop\Excel
Entonces en mi archivo de Excel tengo lo siguiente
En la celda B7 tengo: Servicios Educativos
En la D15 tengo: 02
En la E15 tengo 05
Por lo que al ejecutar la macro me debería guardar un archivo en la ruta: C:\Users\Ivan I. Escalante\Desktop\Excel con el nombre: Servicios Educativos 02 05.xls
Mi Sistema Operativo es Windows 7 y mi Versión de Office es 2007
Vale. Entonces prueba con esta macro.
Private Sub Guardar_Click()
   Dim F As String
   F ="C:\Users\Ivan I. Escalante\Desktop\Excel\"
   F = F + Sheets(1).Range("B7").Value
   F = F + Sheets(1).Range("D15").Value
   F = F + Sheets(1).Range("E15").Value
   ActiveWorkbook.SaveAs F
End Sub
Yo no podré comprobar si funciona porque tengo Windows XP y Office 2003, pero no veo inconveniente para que funcione.
Suerte y un saludo.
Hola gracias por tu ayuda.
Me aparece error en la linea F = F + Sheets(1).Range("D15").Value.
No se a que sedeba esto. ¿Cuál crees que sea el problema?
Si, parece más complicado de lo que suponía. Es una pena no poder estar contigo porque enseguida lo resolveríamos a tu gusto.
¿El error que te ha dado era de que no coincidían los tipos, verdad? Si es lo que yo pienso es porque no se pueden unir cadenas con números. Si cadenas con cadenas cuyo interior sean números
Existen varias soluciones, pero como no sé exactamente como te gusta que quede te las expongo.
Me dices que en la celda D15 tenias 02 y en la E15 tenías 05. Si esas casillas tienen tienen formato numérico dará el error de tipo que te decía, entonces la solución es pinchar con el botón derecho en las casillas, ir a formato de celdas y seleccionar la categoría de texto. Si aparte querías que el fichero se llamara Servicios Educativos 02 05.xls, es decir con espacio antes de 02 y 05 la macro exacta es:
Private Sub Guardar_Click()
   Dim F As String
   F ="C:\Users\Ivan I. Escalante\Desktop\Excel\"
   F = F + Sheets(1).Range("B7").Value
   F = F + " " + Sheets(1).Range("D15").Value
   F = F + " " + Sheets(1).Range("E15").Value
   ActiveWorkbook.SaveAs F
End Sub
Esa es la solución que creo más idónea.
Ahora bien, si las casillas D15 Y E15 por algún motivo imperativo (como que sean el resultado de operaciones numéricas) tuvieran que ser numéricas lo que haríamos sería utilizar esta otra macro.
Private Sub Guardar_Click()
   Dim F As String
   F ="C:\Users\Ivan I. Escalante\Desktop\Excel\"
   F = F + Sheets(1).Range("B7").Value
   F = F + str(Sheets(1).Range("D15").Value)
   F = F + str(Sheets(1).Range("E15").Value)
   ActiveWorkbook.SaveAs F
End Sub
En este segundo caso no aparecerán los ceros a la izquierda.
Es cuestión de que lo dejes a tu gusto. Espero que esta vez ya no de errores. Lo ha probado en mi ordenador y aunque no son mismo Windows y Excel creo que debe funcionar. No olvides puntuar si ya sale bien.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas