Macro para que Guarde Como

Tengo un pequeño problema con esta Macro, y esta macro me permite generar un ARCHIVO DESTINO, pero no lo está generando como debe ser, porque tanto el ARCHIVO ORIGEN como ARCHIVO DESTINO se quedan con los mismos datos. Y lo que necesito es que los datos del ARCHIVO ORIGEN se copie todo al ARCHIVO DESTINO, pero que en el ARCHIVO ORIGEN solamente deben borrarse las Columna B8 hasta la Columna AO5000, ya que el resto contiene formulas.
Nota: Al momento de generar la macro, pregunta si deseo "usar el archivo por default", porque lo que doy la opción NO, para que luego me permita colocar el nuevo nombre que uno quiere.
Agradezco su apoyo y adjunto código de la macro. Porque las respuestas podrian enviarlo a email [email protected]

Gracias
Sub guardar()
nombre = ActiveWorkbook.Name
carpeta = ActiveWorkbook.Path
filaa = carpeta & "\" & nombre
nombrar = MsgBox("usar el archivo por default", vbYesNo, "AVISO")
If nombrar = vbYes Then
filab = carpeta & "\" & "plantilla electronica1" & ".xlsm"
Else
titulo = InputBox("¿Como se va a llamar el archivo?", "AVISO")
filab = carpeta & "\" & titulo & ".xlsm"
End If
ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:=filab, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
xnombre = ActiveWorkbook.Name
Workbooks.Open (filaa)
Workbooks(xnombre).Close savechanges = True
Sheets("planilla").Range(Cells(8, 1), Cells(lastRow, 50)).ClearContents
End Sub

1 respuesta

Respuesta
1

Porque no pruebas cambiando la estructura del borrado. Sugiero que pongas una string directamente. Así:

Sheets("planilla").Range("B8:AO5000).ClearContents

Buenas tarde, con la opción me brinda ya se esta ejecutando la macro quedando de la siguiente forma:

Workbooks.Open (filaa)
Sheets("planilla").Range("B8:AO5000").ClearContents
Workbooks(xnombre).Close savechangesas = True
Sheets("planilla").Range(Cells(8, 1), Cells(lastRow, 50)).ClearContents

Sin embargo, quisiera colocar una expresión más, como que después del borrador de las celdas con la rutina:

Sheets("planilla").Range("B8:AO5000").ClearContents

Quisiera que el archivo origen, se guarde cierre y guarde automáticamente.

Para guardarlo pues solamente se pone después de eso:

Workbooks("nombre"). Save

Workbooks("nombre"). Close

¿O necesitas que se ejecute alguna otra cosa?

Buenas noches amigo marcos vela, ahora si esta ok. La macro, pero otra inquietud, se supone que con el nombre: Workbooks("nombre"). Sabe y Workbooks("nombre"). Close, el archivo ya esta guardado automáticamente, pero cuando ya quiero salir totalmente del excel, me vuelve a pedir "DESEA GUARDAR LOS CAMBIOS EFECTUADOS EN" y eso ya no debería pasar, porque lo que se asume que el archivo ya esta guardado, y no haré ningún cambio.

Ok entonces lo que puedes hacer es crear una macro para auto guardar antes de cerrar. Seria así:

Sub Auto_Close()

Workbooks("nombre").save 

End sub

Y con esto esa parte del código la quitas de la otra macro mandando solo a cerrar:

Workbooks("nombre"). Close

Y ya en la de Auto_Close puedes poner todo lo que gustes que haga antes de cerrar.

¡Gracias!

Amigo marcos vela, ahora si esta todo ok., y no quisiera molestar y abusar de tus conocimiento, y solo quisiera una ultima petición, a esta misma macro quisiera agregar una rutina para eliminar una determinas filas que seria:

Sheets("planilla").Range("B1:AO5000")

Y con esta ultimo pedido, cerraría mi petición en esta macro.

Sí solo quieres borrar el contenido puedes usar lo siguiente:

Sheets("planilla").Range("B1:AO5000").FormulaR1C1 = ""

Sí deseas eliminar las celdas del rango usa la siguiente instrucción: 

Sheets("planilla").Range("B1:AO5000").delete

Un saludo y cualquier duda espero poder ayudarte :)

Buenas tardes amigo marcos vela, quisiera pedirte y sino fuese molesto en diseñarme la rutina para eliminar las filas que no requiero es decir Fila B10:AO5000. Por más que quiero hacerlo no le atino a borrarlo.

Gracias desde ya, por tu gentil colaboración.

No hay problema, pero la rutina te la puse en la respuesta anterior, si quieres que se borre antes de cerrar el archivo ponla en la macro auto_close. Si quieres solo borrar el contenido quedaría así:

Sub Auto_Close()

Workbooks("nombre").sheets("planilla").range("B1:AO5000").FormulaR1C1= ""

Workbooks("nombre"). Close

End sub 

Sí quieres eliminar las celdas sería así: 

Sub Auto_Close()

Workbooks("nombre").sheets("planilla").range("B1:AO5000").Delete 

Workbooks("nombre"). Close

End sub 

Un saludo de antemano y si tienes dudas aún, puedes enviarme el archivo a mi correo y los comentarios de lo que necesitas. Mi correo es [email protected] 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas