Visual Basic para Aplicaciones - Error 91 en tiempo de ejecución variable o bloque with no establecido

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 29
Ha aumentado su posición en 2 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Error 91 en tiempo de ejecución variable o bloque with no establecido

Publicado por Miguel (9 intervenciones) el 29/10/2020 20:55:53
Hola a todos ojala me pudieran ayudar

elabore una pantalla para captura de datos y los datos se tienen que registrar en tres bases diferentes, dos en linea y una local, sin embargo me arroja error 91 al tratar de registrar en linea, si cierro y abro el archivo realilza el registro sin errores pero si lo mantengo abierto y trato de registrar un dato adicional me marca error: les comparto el macro en VBA para ver si me pueden ayudar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
Sub Captura_Datos()
'Declaración de variables
'
Dim strTitulo As String
Dim Continuar As String
Dim TransRowRng As Range
Dim Cells As Range
Dim NewRow As Integer
Dim Limpiar As String
Dim Ulinea As Long
Dim rng As Range
'
strTitulo = "Afiliaciones UCD"
'
Continuar = MsgBox("Dar de alta los datos?", vbYesNo + vbExclamation, strTitulo)
If Continuar = vbNo Then Exit Sub
'
Set TransRowRng = ThisWorkbook.Worksheets("PADRON").Cells(1, 1).CurrentRegion
 
NewRow = TransRowRng.Rows.Count + 1
 
With ThisWorkbook.Worksheets("PADRON")
    .Cells(NewRow, 1).Value = ThisWorkbook.Sheets(1).Range("J13")
    .Cells(NewRow, 2).Value = ThisWorkbook.Sheets(1).Range("L13")
    .Cells(NewRow, 3).Value = ThisWorkbook.Sheets(1).Range("N13")
    .Cells(NewRow, 4).Value = ThisWorkbook.Sheets(1).Range("F10")
    .Cells(NewRow, 5).Value = ThisWorkbook.Sheets(1).Range("I10")
    .Cells(NewRow, 6).Value = ThisWorkbook.Sheets(1).Range("F13")
    .Cells(NewRow, 7).Value = ThisWorkbook.Sheets(1).Range("C13")
    .Cells(NewRow, 8).Value = ThisWorkbook.Sheets(1).Range("C20")
    .Cells(NewRow, 9).Value = ThisWorkbook.Sheets(1).Range("C24")
    .Cells(NewRow, 10).Value = ThisWorkbook.Sheets(1).Range("C22")
    .Cells(NewRow, 11).Value = ThisWorkbook.Sheets(1).Range("C26")
    .Cells(NewRow, 12).Value = ThisWorkbook.Sheets(1).Range("C18")
    .Cells(NewRow, 13).Value = ThisWorkbook.Sheets(1).Range("J18")
    .Cells(NewRow, 14).Value = ThisWorkbook.Sheets(1).Range("J20")
    .Cells(NewRow, 15).Value = ThisWorkbook.Sheets(1).Range("J22")
    .Cells(NewRow, 16).Value = ThisWorkbook.Sheets(1).Range("J24")
    .Cells(NewRow, 17).Value = ThisWorkbook.Sheets(1).Range("J26")
    .Cells(NewRow, 18).Value = ThisWorkbook.Sheets(1).Range("J28")
End With
 
MsgBox "Alta exitosa en Padron Local.", vbInformation, strTitulo
 
 
strTitulo = "Afiliaciones UCD"
 
If Continuar = vbNo Then Exit Sub
 
Set IE = CreateObject("InternetExplorer.application")
 
IE.navigate "https://docs.google.com/forms/d/17QvnTxJwghRb3s2-d2N0G9LbC-QQm-aM2LkLegH26TU/formResponse"
 
Do
    DoEvents
 
 Loop Until IE.ReadyState = 4
 
        IE.Document.all.Item("entry.298824880").Value = Sheets("AFILIACION").Range("G11").Value
        IE.Document.all.Item("entry.1883259314").Value = Sheets("AFILIACION").Range("D15").Value
        IE.Document.all.Item("entry.631402180").Value = Sheets("AFILIACION").Range("J11").Value
        IE.Document.all.Item("entry.1180549576").Value = Sheets("AFILIACION").Range("J28").Value
        IE.Document.all.Item("entry.769845039").Value = Sheets("AFILIACION").Range("J30").Value
        IE.Document.all.Item("entry.1742048913").Value = Sheets("AFILIACION").Range("J7").Value
        IE.Document.all.Item("entry.648607241").Value = Sheets("AFILIACION").Range("D22").Value
        IE.Document.all.Item("entry.2135222699").Value = Sheets("AFILIACION").Range("J20").Value
        IE.Document.all.Item("entry.1595079757").Value = Sheets("AFILIACION").Range("D26").Value
        IE.Document.all.Item("entry.718951254").Value = Sheets("AFILIACION").Range("D24").Value
        IE.Document.all.Item("entry.605605117").Value = Sheets("AFILIACION").Range("D28").Value
        IE.Document.all.Item("entry.1851842681").Value = Sheets("AFILIACION").Range("D20").Value
 
 
IE.Visible = False
 
IE.Document.Forms(0).submit
 
        pag = "https://docs.google.com/forms/d/17QvnTxJwghRb3s2-d2N0G9LbC-QQm-aM2LkLegH26TU/formResponse"
 
        If IE.LocationURL = pag Then
 
        MsgBox "Datos Cargados Correctamente en Padron Nacional"
 
        Else
 
           MsgBox "Datos Cargados Correctamente en Padron Nacional"
         End If
IE.Quit
Set IE = Nothing
 
 
Set IE = CreateObject("InternetExplorer.application")
 
IE.navigate "https://docs.google.com/forms/d/e/1FAIpQLSfs3DsVLu6F0kIfe3SqVUMb55a9wlzNWQqleCtWvNnqLkekgg/formResponse"
 
Do
    DoEvents
 
 Loop Until IE.ReadyState = 4
 
        IE.Document.all.Item("entry.1172945320").Value = Sheets("AFILIACION").Range("K15").Value
        IE.Document.all.Item("entry.379460853").Value = Sheets("AFILIACION").Range("M15").Value
        IE.Document.all.Item("entry.56908933").Value = Sheets("AFILIACION").Range("O15").Value
        IE.Document.all.Item("entry.828988146").Value = Sheets("AFILIACION").Range("G7").Value
        IE.Document.all.Item("entry.1405817967").Value = Sheets("AFILIACION").Range("J7").Value
        IE.Document.all.Item("entry.2011907002").Value = Sheets("AFILIACION").Range("G11").Value
        IE.Document.all.Item("entry.1350775608").Value = Sheets("AFILIACION").Range("D15").Value
        IE.Document.all.Item("entry.298430987").Value = Sheets("AFILIACION").Range("D22").Value
        IE.Document.all.Item("entry.683153751").Value = Sheets("AFILIACION").Range("D26").Value
        IE.Document.all.Item("entry.1878700842").Value = Sheets("AFILIACION").Range("D24").Value
        IE.Document.all.Item("entry.276133944").Value = Sheets("AFILIACION").Range("D28").Value
        IE.Document.all.Item("entry.1545916454").Value = Sheets("AFILIACION").Range("D20").Value
        IE.Document.all.Item("entry.2005620554").Value = Sheets("AFILIACION").Range("J20").Value
        IE.Document.all.Item("entry.705832906").Value = Sheets("AFILIACION").Range("J22").Value
        IE.Document.all.Item("entry.626501034").Value = Sheets("AFILIACION").Range("J24").Value
        IE.Document.all.Item("entry.1045781291").Value = Sheets("AFILIACION").Range("J26").Value
        IE.Document.all.Item("entry.1065046570").Value = Sheets("AFILIACION").Range("J30").Value
        IE.Document.all.Item("entry.790618193").Value = Sheets("AFILIACION").Range("J32").Value
 
IE.Visible = False
 
IE.Document.Forms(0).submit
 
        pag = "https://docs.google.com/forms/d/e/1FAIpQLSfs3DsVLu6F0kIfe3SqVUMb55a9wlzNWQqleCtWvNnqLkekgg/formResponse"
 
        If IE.LocationURL = pag Then
 
        MsgBox "Datos Cargados Correctamente en Padron Regional"
 
        Else
 
           MsgBox "Datos Cargados Correctamente en Padron Regional"
         End If
IE.Quit
Set IE = Nothing
 
End Sub



En la depuracion lo ejecuto nuevamente y se ejecuta sin problemas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Error 91 en tiempo de ejecución variable o bloque with no establecido

Publicado por Antoni Masana (498 intervenciones) el 30/10/2020 19:57:15
Varias cosas:

Creo que también me ha salido un error 1004 pero no estoy seguro.
No puedo depurar el código porque esta protegido y lo puedo ver.
Para la captura de datos es mejor usar un UserForm que es un formulario de usuario como su nombre indica y se trabaja mejor.
El error no se soluciona con el formulario pero es más elegante.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 29
Ha aumentado su posición en 2 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Error 91 en tiempo de ejecución variable o bloque with no establecido

Publicado por Miguel (9 intervenciones) el 30/10/2020 20:18:05
Hola

cierto un descuido adjunto de nuevo el archivo sin protección

es el mismo archivo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Error 91 en tiempo de ejecución variable o bloque with no establecido

Publicado por Antoni Masana (498 intervenciones) el 31/10/2020 20:05:15
Te cuento lo que he visto y he realizado:

Al ejecutar paso a paso veo que el problema esta en la primera línea de asignación:

1
IE.Document.all.Item("entry.298824880").Value = Sheets("AFILIACION").Range(....)

Cuando da el error espero un poco y le doy a F8 para continuar, es decir, volver a ejecutar la instrucción que dio el error y funciona bien.
Como se trata de una asignación no pasa nada si la repito una segunda vez.

La idea es que el programa realice lo mismo que he realizado a mano y se hace así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Sub Captura_Datos()
    'Declaración de variables
    ....
    Dim rng As Range
    Dim T As Single
    '
    strTitulo = "Afiliaciones UCD"
    ....
    Loop Until IE.ReadyState = 4
 
    On Error GoTo Error_1
Resume_1:
    IE.Document.all.Item("entry.298824880").Value = Sheets("AFILIACION").Range("ESTADO").Value
    ....
    IE.Document.all.Item("entry.1851842681").Value = Sheets("AFILIACION").Range("D20").Value
    On Error GoTo 0
 
    IE.Visible = False
    ....
    Loop Until IE.ReadyState = 4
 
    On Error GoTo Error_2
Resume_2:
    IE.Document.all.Item("entry.1172945320").Value = Sheets("AFILIACION").Range("K15").Value
    ...
    IE.Document.all.Item("entry.790618193").Value = Sheets("AFILIACION").Range("J32").Value
    On Error GoTo 0
 
    IE.Visible = False
    ....
    Set IE = Nothing
    Exit Sub
 
Error_1:
    T = Timer + 0.5
    While T > Timer: Wend
    Resume Resume_1
 
Error_2:
    T = Timer + 0.5
    While T > Timer: Wend
    Resume Resume_2
End Sub

He capado el código para indicarte los cambios realizados. Los cuatro punto significa que falta código entre la línea anterior y posterior.
Te adjunto el libro con los cambios.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 29
Ha aumentado su posición en 2 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Error 91 en tiempo de ejecución variable o bloque with no establecido

Publicado por Miguel (9 intervenciones) el 31/10/2020 21:04:33
Excelente

Muy Agradecido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar