¿Es posible utilizar Excel VBA para insertar un botón para crear y guardar una plantilla duplicada con un nombre de archivo de números?

¿Es posible utilizar Excel VBA para insertar un botón para crear y guardar una plantilla duplicada con un nombre de archivo de números?

Tengo un formulario de mejora que me gustaría utilizar como plantilla para crear documentos futuros. Me preguntaba si era posible usar VBA para insertar un botón de comando en la hoja de trabajo para crear una copia y guardarla con el nombre del autor con un número agregado para que podamos realizar un seguimiento de las mejoras realizadas a lo largo del año.

Por ejemplo, tener una plantilla de documento > hacer clic en el botón > Abrir formulario de usuario para ingresar el nombre del autor > y hacer clic para crear un nuevo documento que se guarda en una ubicación específica.

Respuesta1

SÍ, es muy posible. Me gustaría sugerirle que utilice el código VBA escrito a continuación, que le ayudará a guardar el libro de plantilla con un nuevo nombre.

Sub CreateNewBook()

Dim wbk As Workbook
Dim sht1,sht2 As Worksheet
Dim lng As Long, rng As Range

Set sht1 = Sheets("IndexName") 
Set sht2 = Sheets("NameData") 
lng = sht1.Cells(Rows.Count, "A").End(xlUp).Row

Set rng = sht1.Range("A2:A" & lng)

    For Each c In rng
        Sheets("Template").Copy 
        Set wbk = ActiveWorkbook

        wbk.Sheets(1).Range("A100") = c.Value
        sht2.Copy After:=wbk.Sheets(1)    
        wbk.SaveAs c.Value & ".xlsx"
        wbk.Close False

    Next

End Sub

NÓTESE BIEN:La hoja "IndexName" tiene un nombre en la celda A2, que el Código utiliza como "Nuevo nombre de archivo" cada vez que hace clic en el botón para copiar la hoja de plantilla.Así que no olvides actualizar la celda A2 con el nuevo nombre.

La hoja "NameData" se utiliza para realizar un seguimiento de los archivos nuevos en la celda A100 en adelante.

Además, este código guardará los archivos en la ubicación predeterminada. Si quieres cambiarlo, puedes hacerlo.

Espero que esto te ayude. Publiqué este código VBA después de que lo probé.

información relacionada