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
.SaveAs Filename:=ActiveDocument.Path & "\" & name tengo un problema
ReplyDeletehize un cambio dentro del with que hace el error:
ReplyDeleteREEMPLAZA :
.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
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
ReplyDeleteEs de gran ayuda el código, pero tengo dos inconvenientes con el:
ReplyDelete.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
Sub createNewWorkbook()
ReplyDeleteDim 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
Thanks
ReplyDelete