Título: hola alguien me puede ayudar con este error???
Publicado por: pandoro en 10 Octubre 2006, 17:15 pm
Hola colegas he realizado un programa en visual basic, pero en tiempo de ejecucion me da un error (el de la foto y no se que hacer porke no entiendo de que puede ser) Espero que alguien me ayude , por favor.
(http://img174.imageshack.us/img174/9104/errorol2.jpg)
un saludo
Título: Re: hola alguien me puede ayudar con este error???
Publicado por: xDie en 10 Octubre 2006, 17:17 pm
Programa de que?, postea el codigo de fuente o dame mas datos
Título: Re: hola alguien me puede ayudar con este error???
Publicado por: pandoro en 10 Octubre 2006, 18:01 pm
Hola el programa lo que 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... 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: Application.Worksheets(nomhojas).Cells(fila, rangoE).Value = campos(3) pero del ElseIf ElseIf Application.Worksheets(nomhojas).Cells(fila, rangoG).Value <> "" Then no el primero que hace... pero no en la primera pasada sino cuando ya lleva varias hojas miradas y procesadas entonces me da el error.
Título: Re: hola alguien me puede ayudar con este error???
Publicado por: CeLaYa en 10 Octubre 2006, 20:02 pm
creo que el problema son estas lineas
Application.Worksheets(ihojas).Activate nomhojas = Application.ActiveSheet.Name
por que no intentas
nomhojas = Application.Worksheets(ihojas).name
creo que el problema es que le pasas el foco del sistema al excel con Application.Worksheets(ihojas).Activate
Título: Re: hola alguien me puede ayudar con este error???
Publicado por: pandoro en 10 Octubre 2006, 20:24 pm
que kieres decir con el foco del sistema???, y otra cosa, solo con la linea que has puesto tu ya se me activaran las hojas quiero decir, con el nombre HOJA23 ya se me activará ???? gracias
|