none
Interop excel no admite una variable global como numero de columna o fila RRS feed

  • Pregunta

  • Hola a todos, 

    Mi pregunta es la siguiente. 

    Estoy desarrollando una automatización de un proceso a través  de una cinta de opciones de excel en C#. El hecho es que debo tomar un valor de forma dinámica y llevarlo al addin donde crea una operación, como este valor es dinámico debo capturar la celda por medio de una variable global. mas claramente hago esto: 

    Globals.ThisAddIn.Application.ActiveSheet.Cells[Global.CalifY, Global.Califx].Value

    y la variable

    Global.Calif"" es un numero entero.

    El resultado de esto es que se genera un bucle que desborda el programa. 

    Agradezco la ayuda que me puedan brindar. 


    • Editado CamBass viernes, 1 de noviembre de 2019 16:07 Ortografía
    viernes, 1 de noviembre de 2019 16:06

Todas las respuestas

  • hola

    >>debo tomar un valor de forma dinámica

    dinamica de donde ? cual es el input de datos del excel

    >>El resultado de esto es que se genera un bucle que desborda el programa.

    tienes otros eventos ademas de esa linea de codigo ? podrias ir poniendo breakpoint para ver que evento se este generando infinitamente

    no se de donde sale este "Globals" o "Global" no se si es algo del AddIn o si es codigo que has creado

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 1 de noviembre de 2019 16:13
  • Gracias por tu oportuna respuesta. 

    >>debo tomar un valor de forma dinámica: Básicamente son unos formularios de excel, creados a través de C# donde, según el puntaje total le da una calificación de favorable o no favorable y se almacena en una B/D, uso estas variables para que según cada evaluación me lleve a una celda especifica dicho texto, como son 17 evaluaciones, no quiero hacer 17 veces este proceso en el addin según cada evaluación sino que con las variables globales sea "Dinamico". El input de estas variables va en la creación de cada formulario donde especifico en que celda debe ir, dando la coordenada de columna y fila.

    >>El resultado de esto es que se genera un bucle que desborda el programa. Por supuesto, en el addin hay muchos mas eventos y funcionan adecuadamente, si yo le especifico las coordenadas la funcionalidad es adecuada, ejemplo: Globals.ThisAddIn.Application.ActiveSheet.Cells[35, 3].Value;

    De esta manera todo funciona bien, pero esa coordenada varia según cada formulario. 

    >>no se de donde sale este "Globals" o "Global" no se si es algo del AddIn o si es codigo que has creado

    Global, es una clase que cree, donde genero las variables, de esta forma: 

     public static double CalifX
            {
                get { return x5; }
                set { x5 = value; }
            }

            public static double CalifY
            {
                get { return y5; }
                set { y5 = value; }
            }

    Muchas gracias por tu ayuda. 

    viernes, 1 de noviembre de 2019 16:42
  • Gracias por tu oportuna respuesta. 

    >>debo tomar un valor de forma dinámica: Básicamente son unos formularios de excel, creados a través de C# donde, según el puntaje total le da una calificación de favorable o no favorable y se almacena en una B/D, uso estas variables para que según cada evaluación me lleve a una celda especifica dicho texto, como son 17 evaluaciones, no quiero hacer 17 veces este proceso en el addin según cada evaluación sino que con las variables globales sea "Dinamico". El input de estas variables va en la creación de cada formulario donde especifico en que celda debe ir, dando la coordenada de columna y fila.

    >>El resultado de esto es que se genera un bucle que desborda el programa. Por supuesto, en el addin hay muchos mas eventos y funcionan adecuadamente, si yo le especifico las coordenadas la funcionalidad es adecuada, ejemplo: Globals.ThisAddIn.Application.ActiveSheet.Cells[35, 3].Value;

    De esta manera todo funciona bien, pero esa coordenada varia según cada formulario. 

    >>no se de donde sale este "Globals" o "Global" no se si es algo del AddIn o si es codigo que has creado

    Global, es una clase que cree, donde genero las variables, de esta forma: 

     public static double CalifX
            {
                get { return x5; }
                set { x5 = value; }
            }

            public static double CalifY
            {
                get { return y5; }
                set { y5 = value; }
            }

    Muchas gracias por tu ayuda. 

    viernes, 1 de noviembre de 2019 16:47
  • hola

    Pero estas creando un AddIn o es una app winform donde generas el excel ?

    >>El input de estas variables va en la creación de cada formulario donde especifico en que celda debe ir, dando la coordenada de columna y fila.

    porque tienes mas de un formulario? quizas estas abriendo mas instancias sin cerrarlas correctamente, validalo desde el task manager si se cierran las instancias del excel

    No evaluste usas librerias basadas en open xml para trabajar el excel?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 1 de noviembre de 2019 19:59
  • >> Hay mas de un formulario, por que son varias evaluaciones. Las instancias están cerrando correctamente, al igual limpio las variables en cada formulario. 
    miércoles, 6 de noviembre de 2019 18:06