Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   .NET (https://www.clubdelphi.com/foros/forumdisplay.php?f=17)
-   -   Abrir excel desde VB (https://www.clubdelphi.com/foros/showthread.php?t=79618)

franfl 23-07-2012 14:55:54

Abrir excel desde VB
 
Buenas, llevo atascado unos días en este problemilla. Desde un botón que tengo abro un excel, y obtengo el valor de una celda en concreto y la voy guardando en una variable para después mostrarlo en mi pantalla. Consigo traer ese valor pero me sale la siguiente excepción "Excepción de HRESULT: 0X800A01A8", y no consigo quitarla. Creo que el problema puede venir porque al final aunque el while (objExcel.Visible) se cumple intento acceder a una celda que ya no existe, no se si me explico bien.... A ver si alguien me puede ayudar porque no se me ocurre mas pruebas que hacer. Muchisimas gracias
Código:

Dim aux As String
        Dim objExcel As Excel.Application
        Dim xLibro As Excel.Workbook
        Dim xHoja As Excel.Worksheet
        Dim xRango As Excel.Range

        objExcel = New Excel.Application
        xLibro = objExcel.Workbooks.Open("Z:\GESTION\COPIAS DE EXPEDIENTE\TABAL CALCULO Nº documentos copias expediente.xls")
        xHoja = xLibro.Worksheets(1)
        xRango = xHoja.Range("E18")
        objExcel.Visible = True

        While (objExcel.Visible)
            Me.Enabled = False
            Try
                If xRango.Value <> Nothing Then
                    aux = xRango.Value.ToString
                End If
            Catch exc As Exception
                'MessageBox.Show(exc.Message)
            End Try
        End While

        'xRango.ClearContents()
        objExcel.Quit()


Ñuño Martínez 24-07-2012 01:57:09

Lo siento, franfi, pero por aquí VB no se estila mucho. Si fuera QuickBASIC aún podría ayudarte yo, pero de VB no tengo NPI.

franfl 24-07-2012 08:45:27

Muchas gracias Nuño, a ver si encuentro alguna "chapuzilla" para solucionarlo.

mightydragonlor 25-07-2012 04:38:31

Hola no entiendo cual es la necesidad clara que tienes, pero si lo que quieres es leer un archivo de excel y lo que te está generando error es esto:
Código:

                If xRango.Value <> Nothing Then
                    aux = xRango.Value.ToString
                End If

lo puedes solucionar con:
Código:

          If Not xRango Is Nothing Then
                If xRango.Value <> Nothing Then
                    aux = xRango.Value.ToString
                End If
          End If


franfl 25-07-2012 09:41:01

Muchas gracias pero me sigue saltando la excepción, es que es difícil explicar el porque hago ese trozo de código, entiendo que las últimas iteracciones del while el excel sigue siendo visible pero la celda, la hoja o el libro ya no existen y por eso me salta el error. La verdad que no soy capaz de soluccionarlo y he probado mil cosas, así que capturo la excepción y no hago nada con ella porque por lo menos el valor de la celda me lo devuelve correctamente asi q.... una pequeña chapuzilla. Muchisisimas gracias

mightydragonlor 25-07-2012 13:58:20

Otra cosa que puedes hacer es convertir el xls a csv y cargarlo a un datatable, yo hice un programa que se encarga de convertir de excel 97-2003 a csv, de esta manera el error se deja de generar.


La franja horaria es GMT +2. Ahora son las 18:59:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi