Foros del Web » Soporte técnico » Ofimática »

Obtener datos de varias hojas excel

Estas en el tema de Obtener datos de varias hojas excel en el foro de Ofimática en Foros del Web. Buenas. Necesito sacar de varias hojas excel algunos datos. El nombre de las hojas excel van aumentando progresivamente 1.xls, 2.xls, 3.xls .... Cada hoja excel ...
  #1 (permalink)  
Antiguo 04/07/2012, 03:03
 
Fecha de Ingreso: febrero-2012
Mensajes: 1
Antigüedad: 12 años, 2 meses
Puntos: 0
Obtener datos de varias hojas excel

Buenas.
Necesito sacar de varias hojas excel algunos datos.
El nombre de las hojas excel van aumentando progresivamente 1.xls, 2.xls, 3.xls ....
Cada hoja excel tiene 10 páginas de donde hay que sacar 3 datos de varias celdas fijas.
Nombre empresa - A1
CIF - B5
Ingresos - C4

La idea sería desde la excel donde se van a recoger todos los datos pulsar un boton que lleva todo el codigo.
Este botón abrirá el archivo 1 e ira recorriendo las 10 páginas copiando los 3 datos de cada página a la hoja1 de la excel en una hoja que llevará de cabecerá
Nombre - CIF - Ingresos
Así se irán rellenando las filas con los datos de las x excel por lo que habría de filas:

x excel * 10 hojas -> 10x

No se si lo he explicado muy claro.
Gracias
  #2 (permalink)  
Antiguo 05/07/2012, 14:10
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
De acuerdo Respuesta: Obtener datos de varias hojas excel

Hola! pixelmaniac. Podrías utilizar lo siguiente:

Código PHP:
Sub Colectar_Info()
'-------------------
By Cacho Rodríguez
-------------------
Dim myBook$, myWsh As WorksheetshDatos As WorksheetAs Long

myBook 
Dir(ThisWorkbook.Path "\*.xls")
If 
myBook "" Then
  MsgBox 
"Sin libros de extensión xls en" vbLf _
    
"la carpeta " ThisWorkbook.Path "."
  
Exit Sub
End 
If

Set shDatos Workbooks.Add(xlWBATWorksheet).ActiveSheet
shDatos
.[a1:d1] = Array("Libro -> hoja""Nombre empresa""CIF""Ingresos")
1
Application
.ScreenUpdating False
Application
.AutomationSecurity msoAutomationSecurityForceDisable

Do
  If 
myBook <> ThisWorkbook.Name And Right(myBook3) = "xls" Then
    Workbooks
.Open ThisWorkbook.Path "\" & myBook, , True
    For Each myWsh In ActiveWorkbook.Sheets
      i = 1 + i
      shDatos.Cells(i, "
a").Resize(, 4) = _
        Array(ActiveWorkbook.Name & " 
-> " & myWsh.Name, myWsh.[a1], myWsh.[b5], myWsh.[c4])
    Next
    ActiveWorkbook.Close False
  End If

  myBook = Dir
Loop Until myBook = ""

Application.AutomationSecurity = msoAutomationSecurityLow
Application.ScreenUpdating = True
End Sub 
¿Te sirve la idea?...
Saludos, Cacho R.

Etiquetas: excel, hojas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:28.