ISTO E POSSIVEL VB.NET X EXCEL???
Bom dia!
Colegas,eu tenho o método abaixo,que utilizo para transportar dados de uma planilha Excel para um DataSet.
Funciona bem.
O problema é que tenho de fornecer além cominhodaplanilha,também o nome da [Ô]Sheet[Ô] que quero acessar na planilha.
Pergunta: No código abaixo,o que posso modificar,para que o método retorne,o DataSet, com [Ô]Todas[Ô] as Sheets do arquivo Excel,mesmo
eu não sabendo qual o nome de cada Sheet???????
Public Function Pesquisar(ByVal RefPesq As String, ByVal RefSheet As String) As DataSet
Try
[ô]Define StringDeConexao
StringDeConexao = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & RefPesq & [Ô];Extended Properties=Excel 8.0;[Ô]
[ô]Cria objeto conexão (Excel)
Con = New OleDbConnection(StringDeConexao)
[ô]Verifica conexão
Select Case Con.State
Case Is = ConnectionState.Closed
[ô]Abre conexão
Con.Open()
[ô]Criar objeto
Ds = New DataSet
[ô]Criar DataAdapter
Ada = New OleDbDataAdapter([Ô]select * from [[Ô] + RefSheet + [Ô]$][Ô], Con)
[ô]Trasfere dados para DataTable
Ada.Fill(Ds, [Ô]Plan1[Ô])
[ô]Abre conexão
Con.Close()
[ô]Retorna valor
Return Ds
Case Else
[ô]Retorna
Return Nothing
End Select
Catch ex As Exception
[ô]Retorna
Return Nothing
Finally
[ô]Desaloca recurso
Con.Dispose()
Ada.Dispose()
Ds.Dispose()
End Try
End Function
Colegas,eu tenho o método abaixo,que utilizo para transportar dados de uma planilha Excel para um DataSet.
Funciona bem.
O problema é que tenho de fornecer além cominhodaplanilha,também o nome da [Ô]Sheet[Ô] que quero acessar na planilha.
Pergunta: No código abaixo,o que posso modificar,para que o método retorne,o DataSet, com [Ô]Todas[Ô] as Sheets do arquivo Excel,mesmo
eu não sabendo qual o nome de cada Sheet???????
Public Function Pesquisar(ByVal RefPesq As String, ByVal RefSheet As String) As DataSet
Try
[ô]Define StringDeConexao
StringDeConexao = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & RefPesq & [Ô];Extended Properties=Excel 8.0;[Ô]
[ô]Cria objeto conexão (Excel)
Con = New OleDbConnection(StringDeConexao)
[ô]Verifica conexão
Select Case Con.State
Case Is = ConnectionState.Closed
[ô]Abre conexão
Con.Open()
[ô]Criar objeto
Ds = New DataSet
[ô]Criar DataAdapter
Ada = New OleDbDataAdapter([Ô]select * from [[Ô] + RefSheet + [Ô]$][Ô], Con)
[ô]Trasfere dados para DataTable
Ada.Fill(Ds, [Ô]Plan1[Ô])
[ô]Abre conexão
Con.Close()
[ô]Retorna valor
Return Ds
Case Else
[ô]Retorna
Return Nothing
End Select
Catch ex As Exception
[ô]Retorna
Return Nothing
Finally
[ô]Desaloca recurso
Con.Dispose()
Ada.Dispose()
Ds.Dispose()
End Try
End Function
Cara, Eu identifico as Sheets desta forma:
Acima estou acessando a primeira Sheet (planilha) e colocando na Linha 2, Coluna 2, o valor [Ô]Testando 1, 2, 3[Ô]
Você pode tentar fazer um loop entre todas Sheets, algo como:
Acima estou fazendo um loop de 1 até 100 (Improvável que eu tenha mais de 100 Planilhas (sheets)
Dentro do [txt-color=#0000f0]For...Next[/txt-color] eu faço um loop entre todas as planilhas existentes: [txt-color=#0000f0]WoSheet.Sheets.Item(A)[/txt-color]
O Try serve para sair do loop se der erro no caso de não haver mais planilhas para rodar
Dim WoSheet As Microsoft.Office.Interop.Excel.Worksheet
Dim Campo As Microsoft.Office.Interop.Excel.Range
WoSheet = Planilha.Sheets.Item(1)
Campo = WoSheet.Cells(2, 2)
Campo.Value = [txt-color=#e80000][Ô]Testando 1, 2, 3[Ô][/txt-color]
Acima estou acessando a primeira Sheet (planilha) e colocando na Linha 2, Coluna 2, o valor [Ô]Testando 1, 2, 3[Ô]
Você pode tentar fazer um loop entre todas Sheets, algo como:
For A = 1 To 100
Try
WoSheet.Sheets.Item(A)
Campo = WoSheet.Cells(2, 2)
Campo.Value = [txt-color=#e80000][Ô]Teste [Ô] [/txt-color]& A
Catch ex As Exception
Exit For
End Try
Acima estou fazendo um loop de 1 até 100 (Improvável que eu tenha mais de 100 Planilhas (sheets)
Dentro do [txt-color=#0000f0]For...Next[/txt-color] eu faço um loop entre todas as planilhas existentes: [txt-color=#0000f0]WoSheet.Sheets.Item(A)[/txt-color]
O Try serve para sair do loop se der erro no caso de não haver mais planilhas para rodar
PEGUDO,OBRIGADO!
Tópico encerrado , respostas não são mais permitidas