• Domingo 22 de Diciembre de 2024, 08:13

Autor Tema:  Excel  (Leído 1535 veces)

maria_mc

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Excel
« en: Jueves 4 de Diciembre de 2003, 19:04 »
0
Hola amigos, soy nueva en este foro, mi problema es que me han ayudado a realizar una macro en VBA que es para lo siguiente: tengo 300 hojas en un libro de excel desde la 1 a la 300, y la macro desarrollada es para reunir algunos datos de todos los clientes en una sola hoja, o sea, reunir en una hoja, nombre, zona, Compania, Producto.

Pero cada vez que intento ejecutar esta macro me dice que falta sub o function, yo no entiendo porque me da error, me han dicho que esta bien.

Aclaro que tengo excel 2002 y Windows XP.

La macro es esta si alguien le encuentra algo para que no me  funcione le agradezco muchoooo :D A lomejor alguine conoce otra forma menos complicada de consolidar los datos en una sola hoja....

Saludos a todos,

Maria Ines

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
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

mau

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: cr
    • Ver Perfil
    • http://abcdioses.noneto.com
Re: Excel
« Respuesta #1 en: Miércoles 14 de Abril de 2004, 00:01 »
0
Hola amiga, lamento mirar el mensaje luego de tantos dìas,
El error se corrige muy fàcilmente
Solo tienes que poner las siguientes lineas de còdigo en una sola lìnea.

ANTES ***********************
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
FIN ANTES *********************

CORREGIDO********************
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
FIN CORREGIDO ****************

Si quieres puedes copiar los datos que te escribì entre los bloques CORREGIDO y sobreescribir los de tu libro de excel

Saludos
Mau
Programador en VB, SQL, Sybase
Web-Master  de ABCDioses
http]