Foros del Web » Programación para mayores de 30 ;) » .NET »

Progress Bar cuelga Excel

Estas en el tema de Progress Bar cuelga Excel en el foro de .NET en Foros del Web. Buen día a todos, De nueva cuenta dando lata por aquí. Les expongo mi caso a ver si alguien me puede ayudar. Estoy generando una ...
  #1 (permalink)  
Antiguo 15/08/2013, 14:24
 
Fecha de Ingreso: octubre-2012
Ubicación: Piedras Negras
Mensajes: 8
Antigüedad: 12 años, 2 meses
Puntos: 0
Exclamación Progress Bar cuelga Excel

Buen día a todos,

De nueva cuenta dando lata por aquí.

Les expongo mi caso a ver si alguien me puede ayudar.

Estoy generando una aplicación en excel desde Visual Studio 2010, es decir estoy automatizando excel pero desde visual (No VBA).

Tengo un backgroundworker que me hace una consulta a una base de datos y una vez que tiene los datos los coloco en una hoja de excel, al mismo tiempo tengo un formulario con dos barras de progreso en una de ellas tengo el progreso general y la otra la uso para la espera y para mostrar el avance de carga de datos.

Originalmente la barra de progreso esta declarada como marquee y posterior a eso, por medio de código le paso a continuous para poder desplegar el avance de carga.

El problema está en que al terminar de hacer la carga (y dicho sea de paso, sin que se llene completamente la barra) excel me dice que encontró un problema y que se va a cerrar.

Probé por barradeprogreso.disposed() y no me marca error, pero me quita la barra del formulario, cosa que no quiero pues necesito usarlo para una segunda consulta que se hace en el mismo proceso.

Este es el código que estoy usando:

Código vb:
Ver original
  1. Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
  2.         Try
  3.             Control.CheckForIllegalCrossThreadCalls = False
  4.             BackgroundWorker1.ReportProgress(10)
  5.             If Not conn.getData(variables.user, variables.password) Then
  6.                 BackgroundWorker1.CancelAsync()
  7.                 Exit Sub
  8.             End If
  9.             BackgroundWorker1.ReportProgress(20)
  10.             Dim xlApp As Excel.Application = New Excel.Application
  11.             xlApp.ScreenUpdating = False
  12.             Dim INCData As Excel.Worksheet = CType(Globals.ThisWorkbook.Sheets(2), Excel.Worksheet)
  13.             xlFila = 2
  14.             xlColumna = 1
  15.             With INCData
  16.                 .Activate()
  17.                 .Range(.Range("A2"), .Range("S2").End(Excel.XlDirection.xlDown)).Clear()
  18.                 numReg = UBound(conn.Rs.GetRows(), 2) + 1
  19.                 conn.Rs.MoveFirst()
  20.                 MsgBox(numReg)
  21.                 waitBar.Style = ProgressBarStyle.Continuous
  22.                 waitBar.Maximum = numReg
  23.                 contador = 1
  24.                 While Not conn.Rs.EOF
  25.                     xlColumna = 1
  26.                     For i = 0 To conn.Rs.Fields.Count - 1
  27.                         .Cells(xlFila, xlColumna) = conn.Rs(i).Value
  28.                         xlColumna = xlColumna + 1
  29.                     Next i
  30.                     xlFila = xlFila + 1
  31.                     conn.Rs.MoveNext()
  32.                     contador = contador + 1
  33.                     If contador < numReg Then
  34.                         waitBar.Value = contador + 1
  35.                     Else
  36.                         waitBar.Value = numReg
  37.                     End If
  38.                     porcentajeLabel.Text = CType(waitBar.Value * 100 / waitBar.Maximum, Integer) & "%"
  39.                 End While
  40.             End With
  41.             waitBar.Value = 0
  42.             contador = 1
  43.             waitBar.Maximum = 100
  44.             waitBar.Style = ProgressBarStyle.Marquee
  45.             waitBar.MarqueeAnimationSpeed = 200
  46.             porcentajeLabel.Text = "Consultando..."
  47.             xlApp.ScreenUpdating = True
  48.             'conn.loadData("INC")
  49.        Catch exep As Exception
  50.             MsgBox(exep.Message)
  51.             Exit Sub
  52.         End Try
  53.  
  54.  
  55.     End Sub

Tal como está el código en este momento, lo que hace es que excel se queda colgado y necesito cerrarlo desde el administrador de tareas, sin que termine el proceso.

Espero me puedan ayudar.

Saludos,
Erick.

Etiquetas: bar, cuelga, excel, progress, vb, visual
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 01:05.