Como creo una macro en excel para guardar como...

Hola amigo, de nuevo te molesto, en la ayuda que me brindastes anteriormente me fue de gran utilidad, pero quisiera ahora que me colaboraras agregando otras cositas para dejar mi archivo ya terminado.
Esto fue el código que tu me respondiste la vez pasada...
Ok; Como ya conoces el funcionamiento, te pongo solo el codigo; Solo tendrás que copiarlo y pegarlo en tu macro.
Sub MacroX()          'La que tu tengas definida---
  DIM NombreFichero as String
  DIM Fecha as String
   NombreFichero=Range("A1").Select    'A1 corresponde a la celda con el nombre de fichero
   ChDir "C:\Carpeta de Documentos\"
   Fecha=Format(Date(), "DDMMAA") 'Puedes cambiar el formato a tu gusto
   ActiveWorkbook.SaveAs Filename:=NombreFichero & Fecha
   MsgBox "Fichero " & NombreFichero & Fecha & " guardado"
End Sub
Bueno, lo que necesito ahora es agregarle más funciones al mismo botón...
1. Quiero que al dar clic en el botón, me imprima 2 copias, me haga un guardar como con el nombre de una celda y la fecha, limpie todos las celdas que utilice, y que me quede el libro original activo...
De antemano agradeciendo tu colaboración...

1 respuesta

Respuesta
1
A ver... te escribo el código completo para que solo tengas que "Copiar" y "Pegar"
Espero que me puntúes bien por todo el trabajo, ehh,-)
-------------------
Sub MacroX()          'La que tu tengas definida---
  DIM NombreFichero as String
  DIM Fecha as String
   NombreFichero=Range("A1").Select   
'A1 corresponde a la celda con el nombre de fichero
   ChDir "C:\Carpeta de Documentos\"

   Fecha=Format(Date(), "DDMMAA") 'Puedes cambiar el formato a tu gusto
   ActiveWorkbook.SaveAs Filename:=NombreFichero & Fecha
   MsgBox "Fichero " & NombreFichero & Fecha & " guardado"

   ActiveWindow.SelectedSheets.PrintOut Copies:=2  '->Con esto imprime las 2 copias
   Range("A1:B8").Select      '-> Escribe aqui el rango de celdas que quieres borrar
   Selection.ClearContents   '-> Esta instruccion borra el contendido de las celdas.
End Sub
------------------------
Con esto, considero que estará resuelto tu problema...
Mi hermano esta bien tu a porte, ya guarda y todo pero solo me falta que me deje el archivo original abierto y cierre el que creo el guardar como...
Osea que me deje el original abieto para que otro usuario lo utilice, y valla guardando los que valla realizando en la carpeta dejándome el original activo...
Gracias de nuevo...
Ok, eso es muy fácil... tan solo tienes que guardar el archivo original (el que deseas que esté con las casillas limpias) como Plantilla. Para ello, cuando le des a "Guardar Como", en "Tipo de Archivo", especifica "Plantilla", (también sirve si le cambias la extensión a la hoja de calculo... en vez de XLS, tienes que cambiarla a XLT)
Con este "truco", no se guardará el archivo principal, y siempre lo tendrás "listo" para la siguiente vez...
Mi hermano, el truco esta bien, pero tengo un pequeño inconveniente, la copia que me guarda, me la guarda también en el formato de plantilla, y ademas queda activo, no lo cierra, lo que necesito es que me guarde la copia que hago la cierre y me deje el original abierto, no importa que borre el contenido, que después yo le coloco al archivo original al un botón para que antes de empezar borre todos los datos...
De antemano agredeciendo tu colaboración...
Ya he hecho algunos cambios para que quede exactamente como tu deseas... aquí va el código completo:
____________________________________
Sub MacroX()          'La que tu tengas definida---
  Dim NombreFichero As String
  Dim Fecha As String

   NombreFichero = Range("A1"). Value  'A1 corresponde a la celda con el nombre de fichero
   Fecha = Format(Date, "DDMMYY") 'Puedes cambiar el formato a tu gusto
ActiveWorkbook. Sheets. Select     'Selecciona todas las hojas del libro
   ActiveWorkbook. Sheets. Copy 'Y crea una copia de las hojas seleccionadas
'Aqui le decimos que guarde las hojas copiadas con el nombre del fichero que deseamos, y en la carpeta que queremos
   Workbooks(2).Close SaveChanges:=True, Filename:=NombreFichero & Fecha
   ActiveWindow.SelectedSheets.PrintOut Copies:=2  '->Con esto imprime las 2 copias
   Range("B2:B8").Select      '-> Escribe aqui el rango de celdas que quieres borrar
   Selection. ClearContents '-> Esta instruccion borra el contendido de las celdas.
End Sub

Nota: Te recomiendo que en el libro original, elimina las hojas que no necesites y deja solo las que necesitas, porque sino, cuando lo copias, se copian todas las hojas, incrementando bastante el tamaño del fichero de Excel.
______________________________________
Con esto, considero que ya tienes arreglado el problema... espero que me puntúes bien, porque he tenido que machacarme mucho la cabeza... no me salía a la primera y he tenido que exprimirme a fondo con este tema, ya por "cabezonería personal", je je...
En fin, espero que ahora si esté arreglado... ha sido un placer echarte una mano.-
Amigo que pena molestarlo tanto, pero yo utilizo 2 hojas en el archivo, y una de esas hojas es una base de datos de productos, al ejecutar la macro mando a imprimir todo, hasta la base de datos, podrías regarlarme un correo donde te pueda mandar el archivo para que lo revises y tengas una idea de lo que quiero...
Gracias de nuevo...
Ok, te envío de nuevo el programita retocado para arreglar este problema.
_________________________________________________________
Sub MacroX()          'La que tu tengas definida---
  Dim NombreFichero As String
  Dim Fecha As String
   NombreFichero = Range("A1"). Value  'A1 corresponde a la celda con el nombre de fichero
   Fecha = Format(Date, "DDMMYY") 'Puedes cambiar el formato a tu gusto
   ActiveWorkbook. Sheets. Select     'Selecciona todas las hojas del libro
   ActiveWorkbook. Sheets. Copy 'Y crea una copia de las hojas seleccionadas
  'Aqui le decimos que guarde las hojas copiadas con el nombre del fichero que deseamos, y en la carpeta que queremos
   Workbooks(2).Close SaveChanges:=True, Filename:=NombreFichero & Fecha
'Antes de imprimir, desactivamos todas las hojas para que solo se imprima la que deseas:
   Sheets("Hoja1").Select      'Selecciona solo la hoja que quieres imprimir
   Sheets("Hoja1"). Activate 'y la activa...
   ActiveWindow.SelectedSheets.PrintOut Copies:=2  '->Con esto imprime las 2 copias
   Range("B2:B8").Select      '-> Escribe aqui el rango de celdas que quieres borrar
   Selection. ClearContents '-> Esta instruccion borra el contendido de las celdas.
End Sub
________________________________________
No obstante, si deseas enviarme tu programa mi correo es: [email protected]
Un saludo, y espero que ahora si funcione bien...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas