ISTO E POSSIVEL VB.NET X EXCEL???

MARCOS 21/12/2011 10:38:34
#391747
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
PEGUDO 21/12/2011 14:16:11
#391770
Resposta escolhida
Cara, Eu identifico as Sheets desta forma:

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
MARCOS 21/12/2011 16:43:35
#391791
PEGUDO,OBRIGADO!
Tópico encerrado , respostas não são mais permitidas