LER EXCEL-DISPONIVEL NO CODIGO FONTE

CAROLCARTER 29/08/2009 20:42:38
#321357
Olá.

Peguei um exemplo no site de leitura de arquivo excel, mas não sei porque não está dando certo.

Antes, estava ocorrendo dois erros:
1º - Que a variável objAcoesBovespa is used before it has been assigned a value. A null reference exception could result at runtime. Então coloquei lá na declaração = nothing e desapareceu esta mensagem, mas não sei se é o certo fazer isso.

2º Que a variáve xlw iis used before it has been assigned a value. A null reference exception could result at runtime. Não sei o que atribuir, se é que tem que atribuir...

Coloquei para executar, mas nada acontece, então fui colocando algumas msgboxes para saber o que estava sendo executado e vi que o trecho abaixo não está sendo executado:

LerArquivoExcel = True

[ô]Obtem o conteúdo da célula na posição (Lin,Col)
For varLin = 1 To 60 [ô]Lê da linha a até a linha 60
objAcoesBovespa(varLin, 1) = Trim(xlw.Application.Cells(varLin, 1).Value)
objAcoesBovespa(varLin, 2) = Trim(xlw.Application.Cells(varLin, 2).Value)
objAcoesBovespa(varLin, 3) = Trim(xlw.Application.Cells(varLin, 3).Value)

Next varLin

LerArquivoExcel = True
Else

LerArquivoExcel = False
Exit Function
End If

--------------------------------------------------------------
Coloquei o código todo que estou usando abaixo:

Public Class Form2
Private Function LerArquivoExcel(ByVal strNomeArquivo As String) As Boolean
Dim xl As New Excel.Application
Dim xlw As Excel.Workbook
strNomeArquivo = [Ô]D:\2009\Estudo\VB\Planilha.xls[Ô]
Dim objAcoesBovespa As Object
Dim varLin As Short = 60

System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture([Ô]en-US[Ô])

Try
If Len(strNomeArquivo) > 0 Then
[ô]Abrir o arquivo do Excel
xlw = xl.Workbooks.Open(strNomeArquivo)

[ô] definir qual a planilha de trabalho
xlw.Sheets([Ô]Plan1[Ô]).Select()

LerArquivoExcel = True

[ô]Obtem o conteúdo da célula na posição (Lin,Col)
For varLin = 1 To 60 [ô]Lê da linha a até a linha 60
objAcoesBovespa(varLin, 1) = Trim(xlw.Application.Cells(varLin, 1).Value)
objAcoesBovespa(varLin, 2) = Trim(xlw.Application.Cells(varLin, 2).Value)
objAcoesBovespa(varLin, 3) = Trim(xlw.Application.Cells(varLin, 3).Value)
Next varLin

LerArquivoExcel = True
Else

LerArquivoExcel = False
Exit Function
End If

Catch ex As Exception
LerArquivoExcel = False
Finally
[ô] Fechar a planilha sem salvar alterações (para salvar mude False para True)
xlw.Close(False)

[ô] Libera a memória
xlw = Nothing
xl = Nothing
End Try
End Function
Private Sub teste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles teste.Click
LerArquivoExcel([Ô]D:\2009\Estudo\VB\Planilha.xls[Ô])
End Sub
End Class

Tem mais algo que devo acrescentar ou retirar desse código?




WEBMASTER 02/09/2009 10:16:54
#321682
Resposta escolhida
Tem varias coisas para se arrumar...e muitas checagens para se fazer !
Veja que alguns comando sao do vb6 pois nao tenho vb.net aqui para ficar vendo os comandos certos, mas veja conceitualmente o que precisa ser visto...

Nao entendi o que eh sua variavel objAcoesBovespa....pareceu uma matriz.

Public Class Form2
Private Function LerArquivoExcel(ByVal strNomeArquivo As String) As Boolean
Dim xl As New Excel.Application
Dim xlw As Excel.Workbook
Dim xls As Excel.WorkSheet
Dim varLin As Short

[ô]Verifique se o arquivo existe, se nao existir, sai fora como false !!!

Try
If Len(strNomeArquivo) > 0 Then
[ô]Abrir o arquivo do Excel
[ô]e se tiver senha ?
[ô]coloque tambem como somente leitura
[ô]leia mais sobre os parametros de open do workbook
xlw = xl.Workbooks.Open(strNomeArquivo)

[ô] definir qual a planilha de trabalho
[ô]das duas uma: ou coloque um indice, ou certifique-se de que
[ô]plan1 existe...
set xls = xlw.Sheets([Ô]Plan1[Ô])

[ô]Obtem o conteúdo da célula na posição (Lin,Col)
For varLin = 1 To 60 [ô]Lê da linha a até a linha 60
[ô]debug dos valores...
debug.print xls.cells(varLin,1).value)
debug.print xls.cells(varLin,2).value)
Next varLin
LerArquivoExcel = True
Else
LerArquivoExcel = False
Exit Function
End If

Catch ex As Exception
LerArquivoExcel = False
Finally
xlw.Close(False)
xl.quit
xlw = Nothing
xl = Nothing
End Try
End Function

Private Sub teste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles teste.Click
LerArquivoExcel([Ô]D:\2009\Estudo\VB\Planilha.xls[Ô])
End Sub
End Class
CAROLCARTER 02/09/2009 13:01:03
#321704
Olá.

Também não entendi a variavel objAcoesBovespa, peguei na página de códigos fontes para aprender importar planilha, só que ocorreu esses probleminhas.

Ok. Verei os conceitos.

Obrigada.
Tópico encerrado , respostas não são mais permitidas