Jump to content

Archived

This topic is now archived and is closed to further replies.

SALAVERRINO

MEJORAR MACRO AL GRABAR

Recommended Posts

Buenas días a los miembros de este foro, en esta ocasión quisiera pedir su ayuda en como mejorar la macro, es decir que al grabar el nuevo archivo se grabe con la extensión .xlsx, pero conservando la plantilla en VBA, para lo cual adjunto código, y desde ya agradezco su ayuda.

Sub guardar24072015()
NOMBRE = ActiveWorkbook.Name
CARPETAA = ActiveWorkbook.Path
filaa = CARPETAA & "\" & NOMBRE
nombrar = MsgBox("usar el archivo por default", vbYesNo + vbDefaultButton2, "AVISO")
If nombrar = vbYes Then
filab = CARPETAA & "\" & "plantilla electronica1"

Else
titulo = InputBox("¿Como se va a llamar el archivo?", "AVISO")
If titulo = "" Then
Exit Sub
Else
filab = CARPETAA & "\" & UCase(titulo) & ".xlsm"
End If
End If
ActiveWorkbook.Save
ActiveWorkbook.SaveAs fileName:=filab, FileFormat:=xlOpenXMLWorkbookMacroEnabled
xnombre = ActiveWorkbook.Name
Workbooks.Open (filaa)
Sheets("LLENADO").Range("B7:G16").ClearContents
Sheets("LLENADO").Range("K7:P16").ClearContents
Sheets("LLENADO").Range("B21:G30").ClearContents
Sheets("LLENADO").Range("K21:P30").ClearContents
Sheets("LLENADO").Range("B35:G44").ClearContents
Sheets("LLENADO").Range("K35:P44").ClearContents
Sheets("LLENADO").Range("B49:G58").ClearContents
Sheets("LLENADO").Range("K49:P58").ClearContents
Sheets("LLENADO").Range("B63:G72").ClearContents
Sheets("LLENADO").Range("K63:P72").ClearContents

Sheets("LLENADO").Range("I7:I16").ClearContents
Sheets("LLENADO").Range("R7:R16").ClearContents
Sheets("LLENADO").Range("I21:I30").ClearContents
Sheets("LLENADO").Range("R21:R30").ClearContents
Sheets("LLENADO").Range("I35:I44").ClearContents
Sheets("LLENADO").Range("R35:R44").ClearContents
Sheets("LLENADO").Range("I49:I58").ClearContents
Sheets("LLENADO").Range("R49:R58").ClearContents
Sheets("LLENADO").Range("I63:I72").ClearContents
Sheets("LLENADO").Range("R63:R72").ClearContents


Workbooks("ESTRUCTURA PLANILLAS.xlsm").Save

Sheets("LLENADO").Select
    Range("B7").Select

Workbooks(xnombre).Close savechanges = True
Sheets("LLENADO").Range(Cells(7, 1), Cells(lastRow, 50)).ClearContents
End Sub

 

Link to post
Share on other sites

Buenos días Macro Antonio, es cierto como indicas que los archivos .xlsx no pueden contener código VBA, pero básicamente mi pregunta es, el código que describo en una plantilla general que uso para llenar datos y lo que deseo si se pudiera es que al grabar (con otro nombre) ejemplo planilla00 tenga la extensión *.xlsx, y siempre manteniendo mi planitlla. adjunto archivo particionado.

Agradezco la ayuda brindada.

ESTRUCTURA PLANILLAS.part1.rar

ESTRUCTURA PLANILLAS.part2.rar

ESTRUCTURA PLANILLAS.part3.rar

ESTRUCTURA PLANILLAS.part4.rar

Link to post
Share on other sites

Vale mas tarde que nunca.

Application.DisplayAlerts = False
Sheets("Mi plantilla").Copy
ActiveWorkbook.SaveAs Filename:="C:\Users\Antoni\Downloads\Sin macros.xlsx", FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close

 

Link to post
Share on other sites
Guest
This topic is now closed to further replies.

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




  • Posts

    • Hola compañeros del foro,   Tengo el siguiente problema de novato con el presente array que he creado: Este es el código: Option Explicit Option Base 1 Sub adminTemp() Dim admin As String admin = Array("...", "...", "...", "...", "Administrador", "Conectado", "...", "...") Dim fila As Long fila = Sheets("CONEXIONES").Range("A1048576").End(xlUp).Row Dim columna As Byte For columna = 1 To UBound(admin) If Sheets("CONEXIONES").Cells(fila, columna).Value = admin(columna) Then Sheets("CONEXIONES").Rows(fila).Delete Shift:=xlUp Next columna End Sub En otras palabras, me dice que el problema está en la declaración de la variable "admin", pues la declaro como una cadena de caracteres, en cambio cuando la misma variable la declaro como un variant, entonces la macro si funciona correctamente. Pero no quiero declarar el array como un tipo variant cuando sólo contiene valores de tipo string, y ocupar espacio innecesario de memoria.   Sería de ayuda que cualquier orientación sobre este problema...
    • Estoy de acuerdo con @Sergio, es díficil encontrar documentación oficial sobre el código XML de la ribbon.
    • Muchísimas gracias por la corrección, @JSDJSD. Y muchas gracias también por compartir ese vídeo. Efectivamente, me percaté de ese error cuando me pasó el código @Antoni.   Te felicito por tu corrección. Con gente como vosotros, da gusto compartir conocimientos a través de este foro. Mil gracias de nuevo.   Saludos.
    • Ya lo hice pero con gusto lo hago nuevamente, y soy afortunado  Gracias   
    • Buenas noches Ya cheque la modificación y es exactamente lo que no sabía como hacer, mis respetos y mi agradecimiento,  Un saludo desde Irapuato, Gto. México   Gracias 
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy