Crear un nuevo Libro de Excel con VBA ES


Hola a todos, hoy les voy a enseñar como crear un nuevo libro de excel con VBA; ustedes lo pueden crear desde Excel o PowerPoint u otro programa de Office, solo necesitan tener la referencia necesaria.

Ok antes que nada sie stamos en excel no necesitamos ninguna referencia ya que estas se agregan automáticamente, pero si no lo estamos necesitamos añadir la referencia de la siguiente manera:

  • Click en Herramientas->Referencias

  • Encuentren y seleccionen la librería: Microsoft Excel 14.0 Object Library

  • Click en Ok

Ahora crearemos el nuevo Libro, Yo lo voy a crear desde excel y bueno antes de empezar necesitamos tener nuestro ambiente de programación, si no saben como llegar a este paso solo denle click aquí para que vean en el post previo como llegar a esta parte, Ahora empecemos:


  • Click derecho en This Document->Insertar->Modulo

  • Ahora escribamos el siguiente código:
Sub createNewWorkbook()
    Dim newBook As Workbook
    Dim newSheet As Worksheet
    Dim name As String
    name = InputBox("Enter the Name of the new Workbook") & ".xls"
    
    Set newBook = Workbooks.Add
    With newBook
        .Title = name
        .SaveAs FileName:=ActiveDocument.Path & "\" & name
    End With
    
    Set newSheet = newBook.Sheets.Add
    
    newSheet.Cells(1, 1).Value = "You have created a new Workbook"
    
    newBook.Close (True)
End Sub

Bueno ahora solo necesitamos probarlos, solo corran el macro: Click en Run en nuestro ambiente de programación o en su documento activo->Desarrollador->Macros->Escojan la Macro que quieran corren y denle click en Run


Como pueden ver en la carpeta donde mi documento activo esta tengo esto:

Cuando corro la macro, la macro nos pedira inmediatamente el nombre del archivo, solo introduzcanlo y denle click en ok

Y Ahora ya tienen su nuevo archivo, cuando traten de abrirlo si reciben un mensaje de advertencia como el siguiente, solo denle click en Yes y el resultado es el siguiente:


Bueno eso es todo por mi parte ahorita, espero haberles ayudado en algo y pues si tiene dudas o comentarios pues déjenlos en la respectiva área, Adiós chavoz ^_^/

Aqui les dejo el link al proyecto en Github

Comments

  1. .SaveAs Filename:=ActiveDocument.Path & "\" & name tengo un problema

    ReplyDelete
  2. hize un cambio dentro del with que hace el error:

    REEMPLAZA :
    .Title = name
    .SaveAs FileName:=ActiveDocument.Path & "\" & name

    POR ESTO :
    NombreArchivo = name
    GuardarComo = Application.GetSaveAsFilename(InitialFileName:=NombreHoja, _
    fileFilter:="Libro de Excel(*.xlsx), *.xlsx, Libro de Excel habilitado para macros(*.xlsm), *.xlsm, Libro de Excel 97-2003(*.xls), *.xls,CSV (delimitado por comas)(*.csv),*.csv", _
    Title:="EXCELeINFO - guadar hoja activa como archivo nuevo.")
    If GuardarComo = False Then
    Workbooks(NombreArchivo).Close SaveChanges:=False
    Else
    With Application.WorksheetFunction
    Extension = .Trim(Right(.Substitute(GuardarComo, ".", .Rept(" ", 500)), 500))
    End With

    Select Case Extension
    Case Is = "xlsx"
    ActiveWorkbook.SaveAs GuardarComo
    Case Is = "xlsm"
    ActiveWorkbook.SaveAs GuardarComo, xlOpenXMLWorkbookMacroEnabled
    Case Is = "xls"
    ActiveWorkbook.SaveAs GuardarComo, xlExcel8
    Case Is = "csv"
    ActiveWorkbook.SaveAs GuardarComo, xlCSV
    Case Else
    ActiveWorkbook.SaveAs GuardarComo
    End Select
    End If

    ReplyDelete
  3. gracias por tu ayuda,me sirvio mucho.....tengo una consulta,habr si me puedes ayudar.ahora loq eu quiero hacer es copiar datos de una tabla,no siempre seran los mismos datos ni las mismas filas,sdi wur no puede ir seteado en el codigo,a uno de los libros excel que cree,es decir,mediate gui seleccionar el libro en el que quiero pegar los archivos,es posible?..Saludos

    ReplyDelete
  4. Es de gran ayuda el código, pero tengo dos inconvenientes con el:
    .SaveAs Filename:=ActiveDocument.Path & "\" & name

    1. Al dar aceptar o enter sin dar nombre al archivo me genera un error por parte de esa linea
    2. En el caso de decidir no crear el libro es decir dar en cancelar o presionar Esc igualmente me genera un error en esa linea
    que se puede hacer al respecto

    ReplyDelete
  5. Sub createNewWorkbook()
    Dim newBook As Workbook
    Dim newSheet As Worksheet
    Dim name As String
    name = InputBox("Enter the Name of the new Workbook") & ".xlsx"
    If name = ".xlsx" Then
    Exit Sub
    End If

    Set newBook = Workbooks.Add

    With newBook
    .Title = name
    .SaveAs Filename:=ThisWorkbook.Path & "\" & name
    End With

    Set newSheet = newBook.Sheets.Add

    newSheet.Cells(1, 1).Value = "You have created a new Workbook"

    newBook.Close (True)
    End Sub

    ReplyDelete

Post a Comment

Popular posts from this blog

Juego de Gato Usando HTML, JavaScript y CSS

AfterEffects - Quitar el Fondo de un Video Forma 1: KeyLight