Saltar al contenido

se ha producido el error '-2147417848 (80010108) en tiempo de ejecucion : Error de Automatizacion


edu_hoyos

Recommended Posts

publicado

Hola.

Resumo un poco el archivo :

Es una tabla donde en la Columna A se encuentra el codigo de barras. Si el codigo de barras que introduzco esta en dicha columna salta un segundo formulario para introducir el valor.

El Enter_click se encuentra en un formulario donde permite poner un texto ( un codigo de barras ) y al hacer click ejecuta el codigo a continuacion.

Cada X productos salta el error : "se ha producido el error '-2147417848 (80010108) en tiempo de ejecucion : Error de Automatizacion". Si pulsamos en depurar la fila que marca es la del Set.

Si paro el programa y vuelvo a intentarlo salta un error diferente aunque lo marca en el mismo sitio : "Se ha producido el error "1004" en tiempo de ejecucion : Error definido por la aplicacion o el objeto.

 

Lo curioso es que salta el error cada X veces ( no siempre el mismo numero de veces ) y si guardo el excel. Lo cierro y volvemos a abrirlo y seguimos nos permite continuar por el mismo codigo de barras otras tantas veces.

Private Sub Enter_Click()

Dim CodBarras As String
Dim Novedad As String
Dim Revision As Long
Dim celda As Object


Application.ScreenUpdating = False
Application.DisplayAlerts = False
    
CodBarras = txt_codigo_barras

If CodBarras = "" Then
MsgBox "No puedes introducir nada.", , "Error"
Exit Sub
End If

Set celda = Sheets("Contar").Range("A:A").Cells.Find(What:=CodBarras, LookAt:=xlWhole)

If celda Is Nothing Then
MsgBox "Codigo de Barras no encontrado"
Exit Sub

ElseIf celda = CodBarras Then
celda.Select
Unload Me
Formulario_Stock.Show
End If

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
publicado

Hola,

Hice un pequeño cambio en el código si te sigue dando error es por otra parte donde te están los tiros... Aparentemente no debe haber error. Aunque no hay nada como ver la Lógica con ambos formularios y los controles...

Private Sub Enter_Click()
Dim CodBarras As String
Dim Novedad As String
Dim Revision As Long
Dim celda As Range

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        
    CodBarras = txt_codigo_barras
    
    If CodBarras = "" Then
        MsgBox "No puedes introducir nada.", , "Error"
        Exit Sub
    End If
    
    Set celda = Sheets("Contar").Range("A:A").Cells.Find(What:=CodBarras, LookAt:=xlWhole)
    
    If Not celda Is Nothing Then
        celda.Select
        Unload Me
        Formulario_Stock.Show
    Else
        MsgBox "Codigo de Barras no encontrado"
        Exit Sub
    End If
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

End Sub

 

 

Saludos.

publicado
Hace 13 horas, Leopoldo Blancas dijo:

Hola,

Hice un pequeño cambio en el código si te sigue dando error es por otra parte donde te están los tiros... Aparentemente no debe haber error. Aunque no hay nada como ver la Lógica con ambos formularios y los controles...


Private Sub Enter_Click()
Dim CodBarras As String
Dim Novedad As String
Dim Revision As Long
Dim celda As Range

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        
    CodBarras = txt_codigo_barras
    
    If CodBarras = "" Then
        MsgBox "No puedes introducir nada.", , "Error"
        Exit Sub
    End If
    
    Set celda = Sheets("Contar").Range("A:A").Cells.Find(What:=CodBarras, LookAt:=xlWhole)
    
    If Not celda Is Nothing Then
        celda.Select
        Unload Me
        Formulario_Stock.Show
    Else
        MsgBox "Codigo de Barras no encontrado"
        Exit Sub
    End If
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

End Sub

 

 

Saludos.

Gracias Leopoldo. No ha funcionado, ahora en unos minutos cuelgo el archivo.

publicado
Hace 13 horas, Antoni dijo:

Mejor sube el archivo porqué no está nada claro lo que expones.

Ok. He aislado la parte del programa donde da el error y verificado que sigue dandolo.

 

Ejecutando el formulario " formulario_contar" te pide un codigo de barras. Adjunto un txt con los codigos de barras y el stock que dara Correcto. Se puede introducir tambien mal la cantidad pero sera mas largo.

En la prueba de esta mañana me ha fallado cuando llevaba contados 34 pero tengo la sensacion que es aleatorio. ( adjunto pantallazo tambien del error ). Si le das a depurar y vuelves a darle al play para que te muestre el error, te muestra uno diferente

"Se ha producido el error "1004" en tiempo de ejecucion : Error definido por la aplicacion o el objeto. "

Error.JPG

Contar2.xlsm productos.txt

publicado

Me da la impresión que se llena alguna pila de eventos de tanto Unload Me y .Show.

Prueba añadiendo la sentencia DoEvents después de cada Unload Me, a ver si se soluciona.

Lo suyo sería hacerlo todo en un único formulario a base de motrar/ocultar frames.

Mañana si tengo un hueco te subo un ejemplo de lo que quiero decir, mientras, prueba lo que te he comentado.

publicado

Hola, creo que la falla es por el abuso de Unload Me y .Show como dice Antoni, entonces te recomiendo que en vez de cerrar y volver a abrir los formularios, solo escóndelos con MiFormulario.Hide y lo vuelves a mostrar con .Show.

Ya cuando no los utilices entonces usa Unload Me.

Saludos.

publicado
Hace 35 minutos , Antoni dijo:

Me da la impresión que se llena alguna pila de eventos de tanto Unload Me y .Show.

Prueba añadiendo la sentencia DoEvents después de cada Unload Me, a ver si se soluciona.

Lo suyo sería hacerlo todo en un único formulario a base de motrar/ocultar frames.

Mañana si tengo un hueco te subo un ejemplo de lo que quiero decir, mientras, prueba lo que te he comentado.

He probado con DoEvents y sigue fallando. Si me mandas algo perfecto, de todos modos buscare tambien sobre mostrar/ocultar frames. Gracias Antoni.

publicado
Hace 11 minutos , Leopoldo Blancas dijo:

Hola, creo que la falla es por el abuso de Unload Me y .Show como dice Antoni, entonces te recomiendo que en vez de cerrar y volver a abrir los formularios, solo escóndelos con MiFormulario.Hide y lo vuelves a mostrar con .Show.

Ya cuando no los utilices entonces usa Unload Me.

Saludos.

Me pongo a revisar donde necesito cada y pruebo. Gracias Leopoldo!

publicado

Hola, 

Ya me di cuenta que tienes un "Revoltijo" de "formulario_contar.Show" y UnLoad.Me....

1.- Lamas a formulario_contar.Show...

2.- Cierras a formulario_contar y abres Stock

3.- En Activate de Stock otra vez contar.show

4.- Después en el botón otra vez contar.Show.....como 3 veces???

 

Mira la lógica para programar es que no abras y/o cierres y/o llames a los formularios como si fueran Variables, Los Formularios solo se Abren una vez y si quieres abrir otro formulario y que no se vea el de atrás con HIDE lo ocultas y con SHOW lo muestras...

Solo tienes que llamarlos cuando tengas que presentar el formulario en pantalla...

Saludos.

 

 

publicado
Hace 1 hora, Antoni dijo:

Ya está revisado, salvo error u omisión, el formulario adjunto es la fusión de todos los demás. ?

Contar2.xlsm 64 kB · 0 descargas

Mil Gracias Antoni. De momento ya es bastante mas funcional y rapido. Y llevo toda la mañana desde tu ejemplo revisando como funcionan los marcos y es un gusto. Ya he corregido otro archivo que tenia similar. En cuanto confirme que funciona lo doy por resuelto.

publicado

Funciona perfectamente. Antes de darlo por cerrar una duda de los Frames. ME ha pasado ya dos veces que al moverlos se mete uno dentro de otro y cuando miro en el otro no esta. ( pero el codigo y todo esta ) .

Esto es algun bug de Excel? Soy muy torpe?

 

 

publicado
Hace 8 horas, edu_hoyos dijo:

ME ha pasado ya dos veces que al moverlos se mete uno dentro de otro

Siempre ha pasado eso, son muy "quisquillosos" los Frame, no hay nada como hacer un diseño a Lapiz y ya después lo Dibujas con VBA, para no estar moviendo Frames y controles... se vuelve incontrolables...

Saludos.

publicado

La idea de juntar todos los formularios en uno era buena, la forma de llevarla cabo, no, mis disculpas por ello.

La utilización de frames por si sola es engorrosa, la solución correcta es sustituirlos o combinarlos con un control multipage.

Prueba todo el circuito por si he cometido algún error a la hora de mostrar los distintos "formularios".

Contar2 (2).xlsm

publicado
Cita

La idea de juntar todos los formularios en uno era buena, la forma de llevarla cabo, no, mis disculpas por ello.

La utilización de frames por si sola es engorrosa, la solución correcta es sustituirlos o combinarlos con un control multipage.

Prueba todo el circuito por si he cometido algún error a la hora de mostrar los distintos "formularios".

 

Adjunto de nuevo el archivo con una ligera corrección.

Contar2 (2).xlsm

publicado

Hola edu_hoyos,

Lo que tratas de hacer con varios formularios para mi es engorroso, a lo mejor al principio que programaba lo hacia así pero, con la experiencia que fui adquiriendo con un solo formulario Basta y Sobra, ya que, como lo tienes, de un formulario a otro ya no sabes en donde estas parado... es mejor tener todos los datos involucrados en un solo formulario... todo a la vista...!!!

Saludos.

publicado
Hace 17 horas, Leopoldo Blancas dijo:

Hola edu_hoyos,

Lo que tratas de hacer con varios formularios para mi es engorroso, a lo mejor al principio que programaba lo hacia así pero, con la experiencia que fui adquiriendo con un solo formulario Basta y Sobra, ya que, como lo tienes, de un formulario a otro ya no sabes en donde estas parado... es mejor tener todos los datos involucrados en un solo formulario... todo a la vista...!!!

Saludos.

¿Antes de contestar te molestas en leer las respuestas anteriores? porqué a esa conclusión ya se llegó el 24 de noviembre y ya se han dado varias soluciones en ese sentido. 

publicado
Hace 7 horas, Antoni dijo:

¿Antes de contestar te molestas en leer las respuestas anteriores? porqué a esa conclusión ya se llegó el 24 de noviembre y ya se han dado varias soluciones en ese sentido. 

Ya no me regañes y menos en Público...???

Pues si lo leí en su momento... pero como ya pasaron días ya no me acorde...contesto a lo último que veo... por eso opine así... 

Saludos...

 

publicado
Hace 26 minutos , Leopoldo Blancas dijo:

Ya no me regañes y menos en Público...???

Pues si lo leí en su momento... pero como ya pasaron días ya no me acorde...contesto a lo último que veo... por eso opine así... 

Saludos...

 

!Vamos hombre! no llores más, que sabes que en el fondo te quiero. ???

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Hola nuevamente. Por eso la importancia de lo que mencionas tú como "ruta relativa". Tal cual comentas, y aún sin llegar a algunos detalles importantes para ayudarte, en realidad tal cual te comenté le día miércoles, pues sí podías hacer como comentabas, era cosa de obtener los Id de Windows (como tú los llamas) y la ruta de OneDrive en casa usuario y eso sí se puede obtener con VBA y luego pasarlo a PQ, pero medio que te cerraste en que "PQ no puede trabajar con rutas relativas", cosa cierta pero siempre hay formas. Si SAP puede o no guardar en OneDrive o SharePoint, pues si está mapeado en la PC ¡claro que se puede! Pero bueno, creo que si te es útil tu propia propuesta ¡avanza con eso!
    • Perdona @Abraham Valencia pero he estado liado estos días. En realidad todo el problema se reduce a estos dos problemas: Problema 1: El script que "fabrica" SAP y que luego "pego" en la macro, no es capaz de  guardar archivos en SharePoint. He estado buscando, y en realidad muchas personas tienen ese problema (no poder guardar un Excel en SAP a través de VBA). Eso muy probablemente sean problemas de permisos, que no puedo cambiar (no soy administrador de nada). Como no puedo solucionarlo así, paso al plan B, que es guardar en Excel que me genera SAP en el ordenador de cada usuario que ejecute la plantilla (y que sí está guardada en SharePoint), para después con PowerQuery llamar a ese Excel (el export). Para ello, pretendo guardar el export, en la ruta relativa "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" donde los \..\..\..\ saltan las rutas personales de cada usuario (tipo C:\users\IDusuario\). Eso lo hace bien, y el archivo se guarda en la ruta de cada usuario que lo usa, pero surge el problema 2 Problema 2: PowerQuery no trabaja con rutas relativas del tipo  "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" necesita que sea del tipo fija "C:\users\IDusuario\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" pero claro, IDusuario es diferente para cada usuario.   Pero escribiendo todo esto, creo que he dado con una posible solución, no grabar el export en una ruta de usuario, sino en una en la raiz de C:, que siempre será igual para todos los usuarios, del tipo C:\Sap\export.xlsx que seria igual en todos los ordenadores. Asi sí podría decirle a PowerQuery que vaya siempre a la ruta C:\Sap\ que existirá en todos los ordenadores. Mañana intentaré hacer pruebas, aunque mi solución ideal seria que se pudiera guardar en el SharePoint. Saludos.
    • Hola La opción brindada por @torquemada es correcta, funciona, pero hay algunos inconvenientes que (desde mi punto de vista) no la convierten en mi primera elección. Los inconvenientes son: Tendrías que ir columna por columna haciendo los reemplazos, claro que no se harían a mano sino que utilizarías la opción reemplazar o la opción texto en columnas, aun asi demorará un poquito y será trabajoso. Cada vez que descargues otro listado, tendrás que volver a realizar los reemplazos. Me parece una mejor propuesta lo siguiente: Descarga los movimientos a un archivo de Excel Desde tu control de pagos (otro archivo) cargas los movimientos del archivo descargado mediante Power Query Power Query hará los reemplazos y reconocerá todo correctamente (sin que tengas que hacer nada especial) Cuando descargues los movimientos un día posterior, solamente tendrás que hacer clic en "Actualizar" y todo funcionará en automático
    • Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO.  Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
    • Hola nuevamente, mi duda sigue siendo la ruta, o rutas, finales que quedan, esas que llamas "relativas"; igual por si acaso pon 3 o 4 de esas, tal cual son y/o se ven en el explorador de cada PC y, de ser posible, en cualquier otro "lado" en que las veas.
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.