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:
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
Respuesta Responder a este mensaje
#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:
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
Respuesta Responder a este mensaje
#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
Respuesta Responder a este mensaje
#4 Fernando Arroyo
01/03/2005 - 09:03 | Informe spam
"Tommi" escribió en el mensaje news:
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 tu amable comentario :-)

Gracias por tus aportaciones y la de muchos otros, ya que con ellas he
aprendido y me han sacado de muchos apuros.





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
Respuesta Responder a este mensaje
#5 Fernando Arroyo
01/03/2005 - 09:08 | Informe spam
"Ana_Maria" escribió en el mensaje news:
Hola Fernando

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




Me alegra saber que te ha servido :-)

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




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.


Muchas gracias de nuevo
Ana Maria



De nada, y un saludo.


Fernando Arroyo
MS MVP - Excel
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida