Dar nombre a un libro de excel con vba

Necesitaría que me instruyeran de como hacer la macro para que al guardar un archivo el nombre del mismo lo recogiera de un textbox del formulario

Sl2

1 respuesta

Respuesta
2

El siguiente ejemplo, copia la hoja1 en un nuevo libro, guarda el nuevo libro con el nombre del textbox1.

Private Sub CommandButton1_Click()
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  Sheets("Hoja1").Copy
  ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & TextBox1.Value & ".xlsx", _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub

Gracias ¡¡¡¡¡¡

con las pruebas que he realizado e conseguido copiar todo el libro de trabajo y las hoja 1 de mi libro

pero no a las hojas que creo nuevas.

te adjunto el codigo por si puedes ayudarme.

gracias

Private Sub Imprimirparte()
Dim objExcel As Application
Dim RutaArchivo As String
Dim Texto As String
Dim Fila As Integer
Set objExcel = CreateObject("Excel.Application")
With objExcel
    RutaArchivo = ThisWorkbook.Path & "\parte_tmp.xlsx"
    If IsFileOpen(RutaArchivo) Then
            MsgBox "El libro debe estar cerrado para proceder."
            Exit Sub
    Else
        '
        With .Workbooks.Open(RutaArchivo)
       .Worksheets("Hoja1").Range("parte").ClearContents
       .Worksheets("Hoja2").Range("apar").ClearContents
        Fila = 18
        Do While .Worksheets("Hoja1").Cells(18, 1) <> ""
            Fila = Fila + 1
        Loop
final = Fila
                .Worksheets("Hoja1").Range("D2").Value = Me.cbo_not
                .Worksheets("Hoja2").Range("X3").Value = Me.cbo_not
                .Worksheets("Hoja1").Range("C3").Value = Me.txt_descrip
                .Worksheets("Hoja1").Range("G2").Value = Me.txt_fecha
                .Worksheets("Hoja1").Range("L2").Value = Me.txt_equipo
                .Worksheets("Hoja1").Range("B8").Value = Me.eje1
                .Worksheets("Hoja1").Range("B10").Value = Me.eje2
                .Worksheets("Hoja1").Range("B12").Value = Me.eje3
                .Worksheets("Hoja2").Range("X5").Value = Me.txt_fecha
                .Worksheets("Hoja2").Range("X2").Value = Me.txt_equipo
                .Worksheets("Hoja2").Range("B20").Value = Me.eje1
            For i = 0 To Me.ListBox1.ListCount - 1
                .Worksheets("Hoja1").Cells(final, "A") = Me.ListBox1.List(i, 0) ' se tiene que grabar en la celda A18
               ' .Worksheets("Hoja1").Cells(final, "D") = Me.ListBox1.List(i, 1) ' se tiene que grabar en la celda D18
                '.Worksheets("Hoja1").Cells(final, "F") = Me.ListBox1.List(i, 2) ' se tiene que grabar en la celda F18
                final = final + 1
            Next
            final = 42
'
           For J = 0 To Me.ListBox2.ListCount - 1
                .Worksheets("Hoja1").Cells(final, "H") = Me.ListBox2.List(J, 0)    ' se tiene que grabar en la celda N42
                .Worksheets("Hoja1").Cells(final, "N") = Me.ListBox2.List(J, 1)    ' se tiene que grabar en la celda P42
                final = final + 1
            Next
            final = 8
            For i = 0 To Me.ListBox1.ListCount - 1
                .Worksheets("Hoja2").Cells(final, "a") = Me.ListBox1.List(i, 0)
                .Worksheets("Hoja2").Cells(final, "f") = Me.ListBox1.List(i, 1) ' se tiene que grabar en la celda D18
                .Worksheets("Hoja2").Cells(final, "g") = Me.ListBox1.List(i, 2) ' se tiene que grabar en la celda F18
                .Worksheets("Hoja2").Cells(final, "h") = Me.ListBox1.List(i, 3)
                .Worksheets("Hoja2").Cells(final, "i") = Me.ListBox1.List(i, 4)
                .Worksheets("Hoja2").Cells(final, "j") = Me.ListBox1.List(i, 5)
                .Worksheets("Hoja2").Cells(final, "k") = Me.ListBox1.List(i, 6)
                .Worksheets("Hoja2").Cells(final, "r") = Me.ListBox1.List(i, 7)
                .Worksheets("Hoja2").Cells(final, "s") = Me.ListBox1.List(i, 8)
                .Worksheets("Hoja2").Cells(final, "t") = Me.ListBox1.List(i, 9)
                final = final + 1
            Next
'Establecer área de impresión y enviar al impresor.
.Worksheets("Hoja1").PageSetup.PrintArea = "parte"
.Worksheets("Hoja1").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
.Worksheets("Hoja2").PageSetup.PrintArea = "apar"
.Worksheets("Hoja2").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
                .Close SaveChanges:=True
            End With
        End If
    .Quit
End With
End Sub

Esto tiene que ver con la pregunta original:

" Guardar un archivo el nombre del mismo lo recogiera de un textbox del formulario"

Tal vez te equivocaste de código, porque no veo en ninguna parte donde creas hojas.

"pero no a las hojas que creo nuevas."

No entiendo qué necesitas ahora. Podrías explicar.

Si es un tema nuevo, te recomiendo crear una nueva pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas