La misma macro pero guardar como xlsm y no xls (xlsm en virtud d'la macro que contiene)

Para que haga lo que esta haciendo pero que guarde con la extensión xlsm

Sub Guarda_consecutivoDAM()
'Act.Por.Dante Amor
    With ThisWorkbook.Sheets(2)
       archivo = ThisWorkbook.Path & "\" & .Range("C2") & " " & .Range("B6") & " " & .Range("B10") & Format(Date, " dd-mm-yy")
    End With
    '
    wmax = 0
    exis = False
    arch = Dir(archivo & "*.xls*")
    '
    Do While arch <> ""
        nom = Left(arch, InStrRev(arch, ".") - 1)
        num = Val(Mid(nom, InStrRev(arch, "_") + 1))
        If num > wmax Then wmax = num
        arch = Dir()
        exis = True
    Loop
    If exis Then
        wmax = wmax + 1
        ActiveWorkbook.SaveCopyAs archivo & "_" & wmax & ".xls"
    Else
        ActiveWorkbook.SaveCopyAs archivo & "_1.xls"
    End If
End Sub

Así quedo la macro sin 2 lineas. Una    'Range("b2").Value = .Range("b2").Value porque ya esta mencionada en la linea archivo = donde y como captar el nombre. La otra fue eliminar linea ruta =  y  quitar ruta d'esta linea     arch = Dir(ruta & archivo & "*.xls*") y luego meter aqui, archivo = ThisWorkbook.Path & "\" & 

1 Respuesta

Respuesta
2

H o l a:

La ruta es una variable, así que la puedes poner en cualquier parte de la macro, pero lo correcto es al final, por omisión no la puse al final de la macro, no me mates por ello.


If exis Then
wmax = wmax + 1
ActiveWorkbook.SaveCopyAs ruta & archivo & "_" & wmax & ".xls"
Else
ActiveWorkbook.SaveCopyAs ruta & archivo & "_1.xls"
End If
End Sub


Te anexo la macro para guarde con xlsm:

Sub Guarda_consecutivo()
'Act.Por.Dante Amor
    With ThisWorkbook.Sheets(2)
       .Range("b2").Value = .Range("b2").Value
       archivo = .Range("C2") & " " & .Range("B6") & " " & .Range("B10") & Format(Date, " dd-mm-yy")
    End With
    '
    ruta = ThisWorkbook.Path & "\"
    wmax = 0
    exis = False
    arch = Dir(ruta & archivo & "*.xls*")
    '
    Do While arch <> ""
        nom = Left(arch, InStrRev(arch, ".") - 1)
        num = Val(Mid(nom, InStrRev(arch, "_") + 1))
        If num > wmax Then wmax = num
        arch = Dir()
        exis = True
    Loop
    If exis Then
        wmax = wmax + 1
        ActiveWorkbook.SaveCopyAs ruta & archivo & "_" & wmax & ".xlsm"
    Else
        ActiveWorkbook.SaveCopyAs ruta & archivo & "_1.xlsm"
    End If
End Sub

S a l u d o s .

A la macro había yo había echo lo mismo, cambie en las 2 líneas de xls a xlsm y la de arriba igual y ninguna forma me doy resultado positivo, me daba el mismo error (mensaje) que ahora me dice:

¿Y qué versión de excel tienes?

El archivo que se está guardando es el archivo con la macro:

ActiveWorkbook. SaveCopyAs

Lo que hace la instrucción es guardar el archivo que tiene la macro como un archivo con macro, es por eso que debe llevar la extensión xlsm, si abres el archivo con excel 2007 o superior no debes tener problemas, pero si estás en una versión anterior, no puedes guardarlo como xlsm y luego intentar abrirlo como si fuera un archivo con macros.

El problema lo tienes en la versión, en la versión 2007, que estoy utilizando la macro no tiene problemas y después voy a abrir el archivo copiado y no tengo problemas para abrirlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas