Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/10/2006, 10:02
luiski
 
Fecha de Ingreso: mayo-2006
Mensajes: 39
Antigüedad: 18 años
Puntos: 0
Hola el programa lo ke hace es recoger cada linea de un data (recordset) y los va pegando en hojas de excel segun si en la hoja actual en tal celda existe un valor en concreto entonces lo pegas en esa hoja sino pasas a la siguiente hoja y sigues buscando, hasta el final de los registros...

Código:
consulta4 = "select * from lista where lista.[Réf Cde client]='IMP' and lista.[Exportado]=0;"
    Data5.RecordSource = consulta4
    Data5.Refresh
    
    If Data5.Recordset.RecordCount <> 0 Then
        
    'Crear fichero IMPx.xls
    Application.DisplayAlerts = False
    
    nombre = crear_ruta(2)
    nombre = nombre & "imp" & nficheroimp & ".xls"
    
    If Dir(nombre) = "" Then
    
        Application.Workbooks.Open App.Path & "\mdb\plantilla.xls"
        Application.Visible = False

        nombre = crear_ruta(2)
        nombre = nombre & "imp" & nficheroimp & ".xls"
        Application.ActiveWorkbook.SaveAs nombre
        Application.Quit
        
    Else
        'nada
    End If
    
        Application.Workbooks.Open nombre
        Application.Visible = False
        
        nhojas = Application.Worksheets.Count
        Application.ActiveWorkbook.Close
        Application.Quit
        
    Do While Not Data5.Recordset.EOF
        For cont = 0 To 6
            campos(cont) = Data5.Recordset.Fields(cont)
        Next
        
        'Buscar cliente y pegar datos
        
        For ihojas = 2 To nhojas 'empieza en 2 para saltarse la primera que es la plantilla
                       
            Application.Workbooks.Open nombre
            Application.Visible = False
            
            Application.Worksheets(ihojas).Activate
            nomhojas = Application.ActiveSheet.Name
            rangoB = "B"
            
            compara = Application.Worksheets(nomhojas).Cells(fila, rangoB).Value
            'compara = compara & "    "
            
            archivo = Split(compara, " ")
            archivo2 = Split(campos(1), " ")
            
            If archivo(0) = archivo2(0) Then
            'If compara = campos(1) Then
                rangoG = "G"
                
                If Application.Worksheets(nomhojas).Cells(fila, rangoG).Value = "" Then

                    'Pegar datos
                    rangoA = "A"
                    Application.Worksheets(nomhojas).Cells(fila, rangoA).Value = campos(0)
                    Text1.Text = campos(0)
                    rangoB = "B"
                    Application.Worksheets(nomhojas).Cells(fila, rangoB).Value = campos(1)
                    Text2.Text = campos(1)
                    rangoC = "C"
                    Application.Worksheets(nomhojas).Cells(fila, rangoC).Value = campos(6)
                    Text7.Text = campos(6)
                    rangoD = "D"
                    Application.Worksheets(nomhojas).Cells(fila, rangoD).Value = campos(2)
                    Text3.Text = campos(2)
                    rangoE = "E"
                    Application.Worksheets(nomhojas).Cells(fila, rangoE).Value = campos(3)
                    Text4.Text = campos(3)
                    rangoF = "F"
                    Application.Worksheets(nomhojas).Cells(fila, rangoF).Value = "1"
                    Text5.Text = "1"
                    rangoG = "G"
                    Application.Worksheets(nomhojas).Cells(fila, rangoG).Value = campos(5)
                    Text6.Text = campos(5)
                    Text8.Text = "IMP"
                    
                    Data5.Recordset.Edit
                    Data5.Recordset.Fields(7) = 1
                    
                    Application.ActiveWorkbook.Save
                    Application.ActiveWorkbook.Close
                    Application.Quit
                    
                ElseIf Application.Worksheets(nomhojas).Cells(fila, rangoG).Value <> "" Then
                
                    If Application.Worksheets(nomhojas).Cells(fila, rangoG).Value = campos(6) Then 'antes (6)
                        'Nada
                    ElseIf Application.Worksheets(nomhojas).Cells(fila, rangoG).Value <> campos(6) Then
                    
                        fila = fila + 1
                        rangoG = "G" & fila & ""
                        Application.Range(rangoG).EntireRow.Insert
                        'Pegar datos
                        rangoA = "A"
                        Application.Worksheets(nomhojas).Cells(fila, rangoA).Value = campos(0)
                        Text1.Text = campos(0)
                        rangoB = "B"
                        Application.Worksheets(nomhojas).Cells(fila, rangoB).Value = campos(1)
                        Text2.Text = campos(1)
                        rangoC = "C"
                        Application.Worksheets(nomhojas).Cells(fila, rangoC).Value = campos(6)
                        Text7.Text = campos(6)
                        rangoD = "D"
                        Application.Worksheets(nomhojas).Cells(fila, rangoD).Value = campos(2)
                        Text3.Text = campos(2)
                        rangoE = "E"
                        Application.Worksheets(nomhojas).Cells(fila, rangoE).Value = campos(3)
                        Text4.Text = campos(3)
                        rangoF = "F"
                        Application.Worksheets(nomhojas).Cells(fila, rangoF).Value = "1"
                        Text5.Text = "1"
                        rangoG = "G"
                        Application.Worksheets(nomhojas).Cells(fila, rangoG).Value = campos(5)
                        Text6.Text = campos(5)
                        Text8.Text = "IMP"
                        
                        Data5.Recordset.Edit
                        Data5.Recordset.Fields(7) = 1
                        Data5.Recordset.Update
                        
                        Application.ActiveWorkbook.Save
                        Application.ActiveWorkbook.Close
                        Application.Quit
                        
                    End If
                    
                End If
                
            End If
            
        Next 'recorrer hojas del libro
        
        Data5.Recordset.MoveNext
    Loop
    'Guardar el fichero nuevo
    'Application.ActiveWorkbook.Save
    'Application.Quit
    
    Data5.Refresh
    
    Else
        nficheroimp = nficheroimp + 1
    End If
Me da error en la instruccion:

Código:
Application.Worksheets(nomhojas).Cells(fila, rangoE).Value = campos(3)
pero del ElseIf

Código:
ElseIf Application.Worksheets(nomhojas).Cells(fila, rangoG).Value <> "" Then
no el primero ke hace...

pero no en la primera pasada sino cuando ya lleva varias hojas miradas y procesadas entonces me da el error.