Copiar datos de otros archivos xls a una hoja

11/12/2007 - 17:17 por juankbm.mdd | Informe spam
Tengo un problema con Excel, a ver si me podéis ayudar. Supongo que
necesito una macro sencilla en visual Basic para Excel 2003 que
permita realizar la siguiente acción pero ando muy perdido en el tema
de programación :
Suponemos una carpeta con n archivos xls y de un archivo denominada
"Z_Data" quiero extraer los datos de los archivos mencionas de las
celdas A12:B19 y C12, tener en cuenta que los archivos en la carpeta
todos son diferentes.
En el archivo "Z_Data" estos datos extraidos quiero que se ingresen
horizontalmente a partir de C5 hasta K5 en filas por cada copia que
haga.
Los Archivos dentro de la carpeta se llaman 1.Report, 2.Report,
3Report.

Sub RepasarCarpeta()


Dim strArchivoExcel As String
Dim strNombreCarpeta As String


strNombreCarpeta = "C:/MisArchivosExcel"


ChDir strNombreCarpeta
strArchivoExcel = Dir("*.xls")


Do While strArchivoExcel <> ""
MsgBox strArchivoExcel
strArchivoExcel = Dir
Loop

End Sub

Sub RepasarCarpeta2()

Dim wb As Workbook
Dim strArchivoExcel As String
Dim strNombreCarpeta As String


strNombreCarpeta = "C:/MisArchivosExcel"


ChDir strNombreCarpeta
strArchivoExcel = Dir("*.xls")


Do While strArchivoExcel <> ""
Set wb = Workbooks.Open(strNombreCarpeta & "\" & strArchivoExcel)
MsgBox wb.ActiveSheet.Cells(1, 1)
MsgBox wb.Application.Sheets("Hoja2").Cells(2, 1).Value
wb.Close False
Set wb = Nothing
strArchivoExcel = Dir
Loop

End Sub

Este codigo me lo paso un amigo pero solo las habre y las repasa pero
no llena mi tabla.


Espero haberme explicado.
Gracias por vuestra ayuda.
 

Leer las respuestas

#1 Ivan
11/12/2007 - 22:32 | Informe spam
On 11 dic, 17:17, wrote:
Tengo un problema con Excel, a ver si me podéis ayudar. Supongo que
necesito una macro sencilla en visual Basic para Excel 2003 que
permita realizar la siguiente acción pero ando muy perdido en el tema
de programación :
Suponemos una carpeta con n archivos xls y de un archivo denominada
"Z_Data" quiero extraer los datos de los archivos mencionas de las
celdas A12:B19 y C12, tener en cuenta que los archivos en la carpeta
todos son diferentes.
En el archivo "Z_Data" estos datos extraidos quiero que se ingresen
horizontalmente a partir de C5 hasta K5 en filas por cada copia que
haga.
Los Archivos dentro de la carpeta se llaman 1.Report, 2.Report,
3Report.

Sub RepasarCarpeta()

Dim strArchivoExcel As String
Dim strNombreCarpeta As String

strNombreCarpeta = "C:/MisArchivosExcel"

ChDir strNombreCarpeta
strArchivoExcel = Dir("*.xls")

Do While strArchivoExcel <> ""
MsgBox strArchivoExcel
strArchivoExcel = Dir
Loop

End Sub

Sub RepasarCarpeta2()

Dim wb As Workbook
Dim strArchivoExcel As String
Dim strNombreCarpeta As String

strNombreCarpeta = "C:/MisArchivosExcel"

ChDir strNombreCarpeta
strArchivoExcel = Dir("*.xls")

Do While strArchivoExcel <> ""
Set wb = Workbooks.Open(strNombreCarpeta & "\" & strArchivoExcel)
MsgBox wb.ActiveSheet.Cells(1, 1)
MsgBox wb.Application.Sheets("Hoja2").Cells(2, 1).Value
wb.Close False
Set wb = Nothing
strArchivoExcel = Dir
Loop

End Sub

Este codigo me lo paso un amigo pero solo las habre y las repasa pero
no llena mi tabla.

Espero haberme explicado.
Gracias por vuestra ayuda.



hola,

aunque el rango de origen no tiene mucho que ver con el de destino, si
quieres prueba esta macro (en un libro nuevo y si quieres vacio de
datos. Luego, si es +/- lo que buscas se puede adaptar a tus
condiciones reales).

OJO=> te he tomado la palabra en cuanto al nombre de los archivos =>
'n.Report' => un nº + un punto +" Report"

copia/pega en un modulo normal de ESE nuevo libro (asegurate de que el
modulo lo insertas en ese nuevo libro) y

a) cambia en la variable TuRuta por la ruta completa a la carpeta
contenedora, incluyendo la barra invertida final

b) cambia el valor de la variable numC por el nro de tu archivo
'n.Report' mas alto como poco

Sub CopiarParte()
Dim n As Integer, nroC As Integer, uF As Integer, TuRuta As String
nroC = 10 'OJO= aqui debes cambiar el 15 por el nº de archivos
TuRuta = "C:\Documents and Settings\Ivan\Mis documentos\Report\"
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Hoja1")
For n = 1 To nroC
uF = .[c65536].End(xlUp).Offset(1).Row
On Error Resume Next
Workbooks.Open TuRuta & n & ".Report"
If Err.Number = 0 Then
.Range("c" & uF & ":j" & uF + 1) = _
Application.Transpose(Range("a12:b19"))
.Range("k" & uF) = Range("c12")
ActiveWorkbook.Close False
End If
On Error GoTo 0
Next
End With
End Sub

mira a ver si te refieres a algo asi y si quieres comentas

un saludo
Ivan

Preguntas similares