recorrer libros abrir y copiar registros de meses
Publicado por Catalina (14 intervenciones) el 27/05/2011 00:52:19
Amigos(as)
Hola, necesito su ayuda en este problema planteado. Necesito abrir libros (septiembre2010.xlsx, octubre2010.xlsx, noviembre2010.xlsx, etc.) de todos los meses del año uno a uno y copiar los registros de la hoja del mes correspondiente.Todos esos registros tienen que estar consolidado en un libro resumen.xlsm - Hoja("basedato") .
el codigo que estoy trabajando es el siguiente; estoy abriendo el libro(diciembre2010.xlsx) y copiando la hoja(diciembre), pero me falta seguir abriendo y copiando la hoja de otros libros de meses.todos estos registros lo quiero consolidar en otra hoja(basedato) de otro libro(resumen.xlsm)
Private Sub CommandButton1_Click()
dim strArchivo as string
dim oLibro As workbook
dim FilaB, FilaA, Fila As Long
dim ws as worksheet, ws1 As worksheet
dim Fila2 As Integer
dim Celdita As Range
worksheets("basedato").range("A2:AC85000").value = empty
'Creamos la variable de la ruta
strArchivo = "C:\Documents and Settings\catalina\Escritorio\año2010\diciembre2010.xlsx"
'comprobamos si el archivo existe en la ruta indicada
If dir(strArchivo) = "" then
MsgBox "No existe el archivo en la ruta indicada."
exit sub
end If
'deshabilitamos la actualizacion de pantalla
application.screenUpdating = False
'Comprobamos si el libro ya esta abierto,
'y, si no lo esta, lo abrimos
'deshabilitamos los avisos de error
on error resume next
'Intentamos asignar a la variable un libro
'abierto con el nombre que buscamos
Set oLibro = Workbooks(Dir(strArchivo))
'Habilitamos los avisos de error
On Error GoTo 0
'Si la variable no tiene nada asignado
'le asignamos el libro abriendolo directamente
If oLibro Is Nothing Then Set oLibro = workbooks.Open(strArchivo)
set ws1 = workbooks("resumen.xlsm").worksheets("basedato")
set ws = oLibro.worksheets("diciembre")
FilaB = 2
while WS.Cells(FilaB, 2).Value <> Empty
FilaB = FilaB + 1
wend
filaA = 2
for each celdita In ws.Range("B2:B" & FilaB - 1)
sem = Celdita.Offset(, -1).Value
mes = Celdita.Offset(, 0).Value
año = Celdita.Offset(, 1).Value
fechDoc = Celdita.Offset(, 2).Value
fact = Celdita.Offset(, 3).Value
ordCompra = Celdita.Offset(, 4).Value
almacen = Celdita.Offset(, 5).Value
cobro = Celdita.Offset(, 6).Value
razonsocial = Celdita.Offset(, 7).Value
sala = Celdita.Offset(, 8).Value
cliente = Celdita.Offset(, 9).Value
ordennomb = Celdita.Offset(, 10).Value
hruta = Celdita.Offset(, 11).Value
ruta = Celdita.Offset(, 12).Value
ws1.Cells(FilaA, 1).Value = Sem
ws1.Cells(FilaA, 2).Value = Mes
ws1.Cells(FilaA, 3).Value = Año
ws1.Cells(FilaA, 4).Value = FechDoc
ws1.Cells(FilaA, 5).Value = Fact
ws1.Cells(FilaA, 6).Value = OrdCompra
ws1.Cells(FilaA, 7).Value = Almacen
ws1.Cells(FilaA, 8).Value = Cobro
ws1.Cells(FilaA, 9).Value = RazonSocial
ws1.Cells(FilaA, 10).Value = Sala
ws1.Cells(FilaA, 11).Value = Cliente
ws1.Cells(FilaA, 12).Value = OrdenNomb
ws1.Cells(FilaA, 13).Value = HRuta
ws1.Cells(FilaA, 14).Value = Ruta
FilaA = FilaA + 1
Next
'Cerramos sin guardar cambios
oLibro.Close False
'Vaciamos la variable
Set oLibro = Nothing
'Habilitamos la actualizacion de pantalla
Application.ScreenUpdating = True
End Sub
Gracias
Atte.
Catita
Hola, necesito su ayuda en este problema planteado. Necesito abrir libros (septiembre2010.xlsx, octubre2010.xlsx, noviembre2010.xlsx, etc.) de todos los meses del año uno a uno y copiar los registros de la hoja del mes correspondiente.Todos esos registros tienen que estar consolidado en un libro resumen.xlsm - Hoja("basedato") .
el codigo que estoy trabajando es el siguiente; estoy abriendo el libro(diciembre2010.xlsx) y copiando la hoja(diciembre), pero me falta seguir abriendo y copiando la hoja de otros libros de meses.todos estos registros lo quiero consolidar en otra hoja(basedato) de otro libro(resumen.xlsm)
Private Sub CommandButton1_Click()
dim strArchivo as string
dim oLibro As workbook
dim FilaB, FilaA, Fila As Long
dim ws as worksheet, ws1 As worksheet
dim Fila2 As Integer
dim Celdita As Range
worksheets("basedato").range("A2:AC85000").value = empty
'Creamos la variable de la ruta
strArchivo = "C:\Documents and Settings\catalina\Escritorio\año2010\diciembre2010.xlsx"
'comprobamos si el archivo existe en la ruta indicada
If dir(strArchivo) = "" then
MsgBox "No existe el archivo en la ruta indicada."
exit sub
end If
'deshabilitamos la actualizacion de pantalla
application.screenUpdating = False
'Comprobamos si el libro ya esta abierto,
'y, si no lo esta, lo abrimos
'deshabilitamos los avisos de error
on error resume next
'Intentamos asignar a la variable un libro
'abierto con el nombre que buscamos
Set oLibro = Workbooks(Dir(strArchivo))
'Habilitamos los avisos de error
On Error GoTo 0
'Si la variable no tiene nada asignado
'le asignamos el libro abriendolo directamente
If oLibro Is Nothing Then Set oLibro = workbooks.Open(strArchivo)
set ws1 = workbooks("resumen.xlsm").worksheets("basedato")
set ws = oLibro.worksheets("diciembre")
FilaB = 2
while WS.Cells(FilaB, 2).Value <> Empty
FilaB = FilaB + 1
wend
filaA = 2
for each celdita In ws.Range("B2:B" & FilaB - 1)
sem = Celdita.Offset(, -1).Value
mes = Celdita.Offset(, 0).Value
año = Celdita.Offset(, 1).Value
fechDoc = Celdita.Offset(, 2).Value
fact = Celdita.Offset(, 3).Value
ordCompra = Celdita.Offset(, 4).Value
almacen = Celdita.Offset(, 5).Value
cobro = Celdita.Offset(, 6).Value
razonsocial = Celdita.Offset(, 7).Value
sala = Celdita.Offset(, 8).Value
cliente = Celdita.Offset(, 9).Value
ordennomb = Celdita.Offset(, 10).Value
hruta = Celdita.Offset(, 11).Value
ruta = Celdita.Offset(, 12).Value
ws1.Cells(FilaA, 1).Value = Sem
ws1.Cells(FilaA, 2).Value = Mes
ws1.Cells(FilaA, 3).Value = Año
ws1.Cells(FilaA, 4).Value = FechDoc
ws1.Cells(FilaA, 5).Value = Fact
ws1.Cells(FilaA, 6).Value = OrdCompra
ws1.Cells(FilaA, 7).Value = Almacen
ws1.Cells(FilaA, 8).Value = Cobro
ws1.Cells(FilaA, 9).Value = RazonSocial
ws1.Cells(FilaA, 10).Value = Sala
ws1.Cells(FilaA, 11).Value = Cliente
ws1.Cells(FilaA, 12).Value = OrdenNomb
ws1.Cells(FilaA, 13).Value = HRuta
ws1.Cells(FilaA, 14).Value = Ruta
FilaA = FilaA + 1
Next
'Cerramos sin guardar cambios
oLibro.Close False
'Vaciamos la variable
Set oLibro = Nothing
'Habilitamos la actualizacion de pantalla
Application.ScreenUpdating = True
End Sub
Gracias
Atte.
Catita
Valora esta pregunta


0