Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

error 91

Estas en el tema de error 91 en el foro de Visual Basic clásico en Foros del Web. hola! al ejecuta el siguiente programa me da error 91. Sub ConfigCargar() Dim swRootComp As SldWorks.Component2 Set swApp = CreateObject("SldWorks.Application") Set swModel = swApp.ActiveDoc Set ...
  #1 (permalink)  
Antiguo 11/11/2008, 03:56
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
error 91

hola!
al ejecuta el siguiente programa me da error 91.
Sub ConfigCargar()
Dim swRootComp As SldWorks.Component2
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
Set swConf = swModel.GetActiveConfiguration
Set swRootComp = swConf.GetRootComponent

TraverseComponent swRootComp, 1
End Sub


Public Sub TraverseComponent(swComp As SldWorks.Component2, nLevel As Long) 'swComp es tipo object

Dim vChildComp As Variant

vChildComp = swComp.GetChildren


Me explico: sw RootComp es un objeto q se manda al procedimiento TreverseComponent.Cuando le doy a ejecutar me marca en la fila amarilla un error 91:variable de objeto o bloque with no establecido.
alguien me puede ayudar? gracias!
  #2 (permalink)  
Antiguo 11/11/2008, 04:16
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: error 91

Cita:
Iniciado por ebu Ver Mensaje
hola!
al ejecuta el siguiente programa me da error 91.
Sub ConfigCargar()
Dim swRootComp As SldWorks.Component2
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
Set swConf = swModel.GetActiveConfiguration
Set swRootComp = swConf.GetRootComponent

TraverseComponent swRootComp, 1
End Sub


Public Sub TraverseComponent(swComp As SldWorks.Component2, nLevel As Long) 'swComp es tipo object

Dim vChildComp As Variant

vChildComp = swComp.GetChildren


Me explico: sw RootComp es un objeto q se manda al procedimiento TreverseComponent.Cuando le doy a ejecutar me marca en la fila amarilla un error 91:variable de objeto o bloque with no establecido.
alguien me puede ayudar? gracias!
Hola! no entiendo muy bien ese código, pero no debería ser

vChildComp = swRootComp.GetChildren ?

  #3 (permalink)  
Antiguo 11/11/2008, 04:30
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: error 91

Hola! he hecho el cambio q me proponias y ahora me da un error 424: se requiere un objeto.
yo creo q tengo un error de concepto mas q de codigo. te lo escribo de otra manera:

Sub ConfigCargar()
Dim a As object
Set a =...
TraverseComponent a, 1
End Sub


Public Sub TraverseComponent(b As object, n As Long)

Dim c As Variant

c = b.GetChildren


creo q tengo problemas con la variable c de tipo variant. me da lee como un object y me dice q tengo que definir el set c=...
pero para definir ua variable como variant es suficiente con declararla como dim a variant no??
gracias x tu ayuda!
  #4 (permalink)  
Antiguo 11/11/2008, 04:37
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: error 91

Cita:
Iniciado por ebu Ver Mensaje
Hola! he hecho el cambio q me proponias y ahora me da un error 424: se requiere un objeto.
yo creo q tengo un error de concepto mas q de codigo. te lo escribo de otra manera:

Sub ConfigCargar()
Dim a As object
Set a =...
TraverseComponent a, 1
End Sub


Public Sub TraverseComponent(b As object, n As Long)

Dim c As Variant

c = b.GetChildren


creo q tengo problemas con la variable c de tipo variant. me da lee como un object y me dice q tengo que definir el set c=...
pero para definir ua variable como variant es suficiente con declararla como dim a variant no??
gracias x tu ayuda!
Prueba asignando 'c' así:

Set c = b.GetChildren

  #5 (permalink)  
Antiguo 11/11/2008, 04:48
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: error 91

keba! sigo teniendo el mismo error. he probado con mil cosas y nada. sq no lo entiendo me tendria q hacer bien

gracias x tu ayuda!
  #6 (permalink)  
Antiguo 11/11/2008, 09:11
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: error 91

hola!
alguien sabe como y para q se usa el bloque With...End With.
tiene q ver con los object, set... y con el error 91.
gracias!
  #7 (permalink)  
Antiguo 11/11/2008, 09:12
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: error 91

No, el uso del bloque With no va a solucionar tu problema, es que por alguna razón no se está asignando el objeto. ¿Has probado con Set como te indicó Avellaneda?.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 11/11/2008, 09:34
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: error 91

si, si lo he probado y nada.
sq no me reconoce la variable c. me pone q esta vacia.
igual estoy metiendo la pata al definir los otros objetos. estoy con el API help de solidworks pero nada. en esto ya no se si me podreis ayudar.
muchas gracias de todos modos!
  #9 (permalink)  
Antiguo 11/11/2008, 09:45
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: error 91

buenas noticias:lo he conseguido arreglar!!
era:vChildComp = swConf.GetChildren

pero ahora una fila mas abajo me da un error 13:no coinciden los tipos!

Dim vChildComp As Variant
Dim i As Long
vChildComp = swConf.GetChildren

For i = 0 To UBound(vChildComp)
no lo entiendo xq i me coje el valor 1.

thanks!
  #10 (permalink)  
Antiguo 11/11/2008, 10:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: error 91

Eso significa que vChildComp no es un array. Prueba esto y me cuentas qué te muestra:
Código vb:
Ver original
  1. MsgBox TypeName(vChildComp)
Así, sabrás qué tipo de variable es devuelta.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 12/11/2008, 01:29
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: error 91

me pone Empty.pero no deveria decirme el tipo de variable q es?
me han dixo q para declarar un array dinamico tipo variant no hay q poner los parentesis Dim vChildComp () As Variant q se declara sin parentesis Dim vChildComp As Variant. entonces de primeras no sabes d q tipo es, y eso a ls novatos como yo no nos ayuda mucho...
  #12 (permalink)  
Antiguo 12/11/2008, 01:44
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: error 91

en el API de solidworks pone:
Syntax (OLE Automation)

Children = Configuration.GetChildren ( )

Output:
(VARIANT) Children
Array containing the children configurations of this configuration

por lo q vChildComp tiene q ser un array. pero luego es mi programa no me lo reconoce como un array:
vChildComp = swConf.GetChildren 'se supone q aqui vChildComp es un array
MsgBox TypeName(vChildComp) 'me dice q vChildComp está vacio.
For i = 0 To UBound(vChildComp) 'y aqui me da error 13: q no coinciden los tipos
Set swChildComp = vChildComp(i)

el otro dia hice un programa parecido con las mismas sentencias y me hacia bien aunq en el array de este programilla me pusiera tambien empty. es un poco extraño no??
gracias de todos modos!
  #13 (permalink)  
Antiguo 12/11/2008, 04:36
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: error 91

he solucionado el problema!
he vuelto a poner: vChild = swComp.GetChildren
y tb he puesto algo q he encontrado x ai, creo q hace q se reconozca la variable como vector.

Dim swCompXform As SldWorks.MathTransform
Dim vXform As Variant

Set swCompXform = swComp.Transform2
If Not swCompXform Is Nothing Then
vXform = swCompXform.ArrayData
End If

pero ahora tengo otro problema. tengo dos sentencias for y al ejecutar el programa se me queda pillado. parece que el ciclo nunca acaba pero en este caso tendria q repetirlo solo una vez no??es como tener:
for i=0 to 1
for j=0 to 0
...

vChild = swComp.GetChildren
For i = 0 To UBound(vChild) 'aqui UBound(vChild)=1
Set swChildComp = vChild(i)
konfigMatrix = swModel.GetConfigurationNames
For j = 0 To UBound(konfigMatrix) ' aqui UBound(konfigMatrix)=0
ActiveCell.FormulaR1C1 = konfigMatrix(j)
ActiveCell.Offset(0, 1).Select
Next j
Next i

haber si me podeis ayudar! gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:05.