Crear Libro excel y sus hojas en vba por medio tabla

27/02/2005 - 16:09 por ana_rg | Informe spam
Hola a todos

Me gustaria saber como podria progranar en VBA:
Tengo una tabla en una hoja de cálculo y en la columna A tenemos el
nombre de los libros nuevos que quiero crear y en la columna B el
nombre de las hojas que quiero crear de cada libro correspondiente.

A B
1 LIBROa Hoja1a
2 LIBROa Hoja2a
3 LIBROa Hoja3a
4 LIBROb Hoja1b
5 LIBROb Hoja2b
6 LIBROc Hoja1c


Muchisimas gracias
Saludos Ana Maria

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
27/02/2005 - 20:35 | Informe spam
Prueba con el siguiente código:

Sub CrearLibros()
Dim intHojasEnLibroNuevo As Integer, strNombreLibro As String, n As Integer
Dim wkbLibro As Workbook, wksHoja As Worksheet

With Application
intHojasEnLibroNuevo = .SheetsInNewWorkbook
.SheetsInNewWorkbook = 1

With Worksheets("Hoja1") 'Hoja donde se encuentra el índice (se supone que el índice empieza en A1)
For n = 1 To .[A65536].End(xlUp).Row
If .Range("A" & n) <> strNombreLibro Then
If Not wkbLibro Is Nothing Then wkbLibro.SaveAs "C:\" & strNombreLibro 'Añadir a C:\ la ruta
strNombreLibro = .Range("A" & n)
Set wkbLibro = Workbooks.Add
wkbLibro.Worksheets(1).Name = .Range("B" & n)
Else
Set wksHoja = wkbLibro.Worksheets.Add(after:=wkbLibro.Worksheets(wkbLibro.Worksheets.Count))
wksHoja.Name = .Range("B" & n)
End If
Next n
End With

wkbLibro.SaveAs "C:\" & strNombreLibro

.SheetsInNewWorkbook = intHojasEnLibroNuevo
End With

Set wksHoja = Nothing
Set wkbLibro = Nothing
End Sub


Un saludo


Fernando Arroyo
MS MVP - Excel


"Ana_Maria" escribió en el mensaje news:
Mostrar la cita
#2 Tommi
27/02/2005 - 21:08 | Informe spam
Saludos, Fernando.
No descansas ni los Domingos.
Tu código me parece de lo más elegante y se nota el gran dominio que tienes
de los objetos de Excel.
Gracias por tus aportaciones y la de muchos otros, ya que con ellas he
aprendido y me han sacado de muchos apuros.


"Fernando Arroyo" escribió en el mensaje
news:u%
Prueba con el siguiente código:

Sub CrearLibros()
Dim intHojasEnLibroNuevo As Integer, strNombreLibro As String, n As
Integer
Dim wkbLibro As Workbook, wksHoja As Worksheet

With Application
intHojasEnLibroNuevo = .SheetsInNewWorkbook
.SheetsInNewWorkbook = 1

With Worksheets("Hoja1") 'Hoja donde se encuentra el índice (se
supone que el índice empieza en A1)
For n = 1 To .[A65536].End(xlUp).Row
If .Range("A" & n) <> strNombreLibro Then
If Not wkbLibro Is Nothing Then wkbLibro.SaveAs "C:\" &
strNombreLibro 'Añadir a C:\ la ruta
strNombreLibro = .Range("A" & n)
Set wkbLibro = Workbooks.Add
wkbLibro.Worksheets(1).Name = .Range("B" & n)
Else
Set wksHoja =
wkbLibro.Worksheets.Add(after:=wkbLibro.Worksheets(wkbLibro.Worksheets.Count))
wksHoja.Name = .Range("B" & n)
End If
Next n
End With

wkbLibro.SaveAs "C:\" & strNombreLibro

.SheetsInNewWorkbook = intHojasEnLibroNuevo
End With

Set wksHoja = Nothing
Set wkbLibro = Nothing
End Sub


Un saludo


Fernando Arroyo
MS MVP - Excel


"Ana_Maria" escribió en el mensaje
news:
Mostrar la cita
#3 ana_rg
28/02/2005 - 20:29 | Informe spam
Hola Fernando

Primero de todo, muchisimas gracias por tu colaboración y pasarme
este programa. Ya lo he probado y funciona perfectamente.

Estoy todavía en los inicios en programación en VBA,pero espero que
poco a poco vaya mejorando.

Tengo una pequeña duda en que quiere decir exactamente esta parte de
la sentencia

.End(xlUp).Row


Muchas gracias de nuevo
Ana Maria
#4 Fernando Arroyo
01/03/2005 - 09:03 | Informe spam
"Tommi" escribió en el mensaje news:
Mostrar la cita
Gracias por tu amable comentario :-)

Mostrar la cita
Ese es el primer objetivo de los grupos de noticias: que nos ayudemos desinteresadamente unos a otros, aprovechando la universalidad y la rapidez de Internet. El segundo objetivo, y no menos importante desde mi punto de vista, es que _todos_ podamos aprender cosas sobre los temas que nos interesan.

Un saludo.


Fernando
#5 Fernando Arroyo
01/03/2005 - 09:08 | Informe spam
"Ana_Maria" escribió en el mensaje news:
Mostrar la cita
Me alegra saber que te ha servido :-)

Mostrar la cita
Esa instrucción sirve para obtener el último número de fila con datos de la columna. Puedes hacer una prueba para hacerte una idea de lo que hace. En una columna con datos, sitúate en una fila que se encuentre por debajo de la última fila con datos. Si presionas la tecla Fin y luego la tecla del cursor hacia arriba, estarás haciendo lo mismo que hace la instrucción: situarte en la última fila con datos para obtener su número.

Mostrar la cita
De nada, y un saludo.


Fernando Arroyo
MS MVP - Excel
Ads by Google
Search Busqueda sugerida