Error en una macro

Maria Ines Mc Loughlin
09 de Diciembre del 2003
Tengo un libro de excel con varias hojas desde la 1 hasta la 300, donde cada hoja de ese libro es un cliente, mi idea es reunir algunos datos de ese cliente y consolidarlos en una hoja, para ello me ayudaron a hacer esta macro, pero hasta ahora nadie sabe donde esta el error, me dice que falta definir sub oo function, yo uso excel 2002, podra ser algo con la version de excel?. Muchas gracias a quien me pueda ayudar, saludos, Maria Ines:

La macro es esta:

Private iClienteIndex As Integer
Const sHomeSheet = "Sheet1"

Sub ConsolidandoDatos()
Dim iSheetITem As Integer
Dim iActiveSheet As Integer

iActiveSheet = Worksheets(sHomeSheet).Index
iClienteIndex = 0

For iSheetITem = 1 To ActiveWorkbook.Sheets.Count

If iActiveSheet <> iSheetITem Then
iClienteIndex = iClienteIndex + 1
sNombre = ActiveWorkbook.Sheets.Item(iSheetITem).Range("A1").Value
sZona = ActiveWorkbook.Sheets.Item(iSheetITem).Range("B1").Value
sCompania = ActiveWorkbook.Sheets.Item(iSheetITem).Range("C1").Value
sProducto = ActiveWorkbook.Sheets.Item(iSheetITem).Range("D1").Value
Call DatosPorCliente(iSheetITem, sNombre, sZona, sCompania, sProducto)
End If

Next

MsgBox "Datos consolidados!!!

End Sub

Sub DatosPorCliente(ByVal iActiveSheet As Integer, ByVal sNombre As String,
ByVal sZona As String, ByVal sCompania As String, ByVal sProducto As String)
ActiveWorkbook.Sheets.Item(sHomeSheet).Range("A5").Offset(iClienteIndex,
0).Value = sNombre
ActiveWorkbook.Sheets.Item(sHomeSheet).Range("A5").Offset(iClienteIndex,
1).Value = sZona
ActiveWorkbook.Sheets.Item(sHomeSheet).Range("A5").Offset(iClienteIndex,
2).Value = sCompania
ActiveWorkbook.Sheets.Item(sHomeSheet).Range("A5").Offset(iClienteIndex,
3).Value = sProducto

End Sub






Jose Oscar
09 de Diciembre del 2003
Hola Maria Ines....... Una pregunta antes que nada , eres de Marcos Paz (Buenos Aires Argentina) porque aca hay una familia mac luglin, que es medico de niños creo!!! ¿?
Bueno no importa..... aca esta la formula aparentemente resuelta..--- me parece que te va a escribir los datos de las 3000 hojas en la hoja uno y todos en el mismo rango, sis es asi escribi diciendolo

donde dice Const sHomeSheet As String = "HOJA1"
asegurate que seha la hoja (nombre ) de tu hoja 1

Suertte
Jose Oscar

Private iClienteIndex As Integer
Const sHomeSheet As String = "HOJA1"

Sub ConsolidandoDatos()
Dim iSheetITem As Integer
Dim iActiveSheet As Integer

iActiveSheet = Worksheets(sHomeSheet).Index
iClienteIndex = 0

For iSheetITem = 1 To ActiveWorkbook.Sheets.Count

If iActiveSheet <> iSheetITem Then
iClienteIndex = iClienteIndex + 1
sNombre = ActiveWorkbook.Sheets.Item(iSheetITem).Range("A1").Value
sZona = ActiveWorkbook.Sheets.Item(iSheetITem).Range("B1").Value
sCompania = ActiveWorkbook.Sheets.Item(iSheetITem).Range("C1").Value
sProducto = ActiveWorkbook.Sheets.Item(iSheetITem).Range("D1").Value
Call DatosPorCliente(iSheetITem, sNombre, sZona, sCompania, sProducto)
End If

Next

MsgBox "Datos consolidados!!!"

End Sub

Sub DatosPorCliente(ByVal iActiveSheet As Integer, ByVal sNombre As String, _
ByVal sZona As String, ByVal sCompania As String, ByVal sProducto As String)
ActiveWorkbook.Sheets.Item(sHomeSheet).Range("A5").Offset(iClienteIndex, _
0).Value = sNombre
ActiveWorkbook.Sheets.Item(sHomeSheet).Range("A5").Offset(iClienteIndex, _
1).Value = sZona
ActiveWorkbook.Sheets.Item(sHomeSheet).Range("A5").Offset(iClienteIndex, _
2).Value = sCompania
ActiveWorkbook.Sheets.Item(sHomeSheet).Range("A5").Offset(iClienteIndex, _
3).Value = sProducto

End Sub


Maria Ines Mc Loughlin
09 de Diciembre del 2003
Hola, si el nombre de mi hoja esta correcta, no se donde esta el problema....

Salu2

Maria ines

Jose Oscar
09 de Diciembre del 2003
Hola maria Ines......
La macro anda de mil, el problema que tenia era que al copiarla y pegarla en la pagina web secortaban las linas ejemplo....

Sub commbiar(blabla as integer,
sisis as long,
parametro as variant,

y debia cortarse asi...

Sub commbiar(blabla as integer, _
sisis as long, _
parametro as variant, _

ese guin faltante _ te rompio el codigo....... de todas formas te voy a enviar la hoja excel donde la prove, sino llega sera porque tu correo esta mal scrito.
De todas formas en la pagina esta corregida , copiala y pegala. Si llega mi correo la vas a ver funcionar

Un saludo y espera que lo estoy mandando....
haaa!!! ya hay algo escrito en las hojas que te va traer a la primera hoja...

Jose Oscar