Crear una base de datos

23/03/2009 - 18:29 por José Rafael | Informe spam
Necesito crear una base de datos en la hoja "Base" de un libro excel llamado
"Carpinterias", cuya hoja1 contiene en la columna A:A la lista de nombres de
pueblos que corresponde exactamente a las hojas o pestañas restantes del
libro.
Al abrir cada hoja o pestaña (que corresponde al nombre del pueblo), el dato
de la carpinteria o carpinterias se encuentran en las cuatro primeras filas
de cada columna, es decir: A1=Nombre; A2=Dirección; A3=Población; A4=
teléfono.
Si hubiera mas de una carpinteria en ese pueblo (hoja) la siguiente
carpinteria estaría en la columna B y así sucesivamente, la tercera en la
columna C, etc...
Sería de agradecer un código que vaya recorriendo todas las hojas y
escribiendo en la hoja "Base" (x filas en horizontal) los 4 datos que
figuran en las cuatro primeras filas de cada columna empezando por la
columna A y "recorriera" la siguiente columna B por si hubiera mas datos y
asi sucesivamente hasta que no encontrara mas datos y entonces pasara a la
siguiente hoja.
El objetivo es tener los datos agrupados en una sola hoja llamada "Base".
Ideal es tener un botón asociado al código VBA, en la hoja "Base" que ponga
en marcha la macro.
Tengo 5 libros distintos por provincias y de ellos, hay libros que pueden
tener 100 o mas hojas y en cada una de ellas al menos una carpinteria
(columna A, cuatro primeras filas).
Saludos
José Rafael de Valencia (España)

Preguntas similare

Leer las respuestas

#6 José Rafael
25/03/2009 - 12:13 | Informe spam
Por cierto, se me olvidaba.. el proceso se interrumpe con este mensaje:

Se ha producido el error '6' en tiempo de ejecución:
Desbordamiento

y si le doy al botón depurar está detenido en la linea :
Carp = Carp + 1

si le doy al botón finalizar presenta la hoja "base" con casi todos las
hojas controladas menos las últimas (+-10 hojas mas) y me pone los datos en
filas horizonales (hasta la 255) pero repetido el mismo dato en las cuatro
columnas tal y como te decía en mi anterior post.

Este es el código modificado que me pasaste...



Sub Carpinterias()
Dim n As Byte, Col As Byte, Carp As Byte
Application.ScreenUpdating = False
For n = 2 To Worksheets.Count
With Worksheets(n)
For Col = 1 To .Range("iv1").End(xlToLeft).Column
Carp = Carp + 1
Cells(Carp, 1).Resize(, 4).Value = .Cells(1, Col).Resize(4).Value

Next
End With
Next
End Sub




Saludos y gracias de nuevo...
José Rafael


"José Rafael" escribió en el mensaje
news:OPjq%
Mostrar la cita
#7 Héctor Miguel
25/03/2009 - 22:41 | Informe spam
hola, José Rafael !

Mostrar la cita
esto es por el tipo de datos declarado en la variable "Carp" (As Byte) y requiere un mayor alcance

prueba con las siguientes adaptaciones:

Sub Carpinterias()
Dim n As Byte, Col As Byte, Fila As Integer
Application.ScreenUpdating = False
For n = 2 To Worksheets.Count
With Worksheets(n)
For Col = 1 To .Range("iv1").End(xlToLeft).Column
Fila = Fila + 1
Cells(Fila, 1).Resize(, 4).Value = _
Application.Transpose(.Cells(1, Col).Resize(4).Value)
Next
End With
Next
End Sub

saludos,
hector.
#8 José Rafael
27/03/2009 - 10:54 | Informe spam
Gracias Héctor Miguel, ahora funciona perfectamente.
Saludos cordiales desde Valencia (España)
José Rafael

"Héctor Miguel" escribió en el mensaje
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida