Jump to content
a3deluxe

Exportar dados EXcel para uma TextBox

Recommended Posts

a3deluxe

Boas,

Queria Exportar dados de um ficheiro EXcel de uma celula (exemplo: celula A5 para uma Textbox1)

Aqui fica o código que ja fiz, mas não funciona porque deve ter a ver com a "driver" para a abertura de ficheiros do excel.

//  

Public Conn As ADODB.Connection
Public rs2 As ADODB.Recordset
Dim ent As Long
Dim sai As Long

Public Sub xlsx()
	On Error GoTo erro
	Conn = New ADODB.Connection
	rs2 = New ADODB.Recordset
	Conn.ConnectionString = "Driver={Microsoft dBase Driver (*.xlsx)};SourceType=xlsx;SourceDB=d:\;Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;"
	Conn.Open()
	Exit Sub
erro:

	Resume Next
	Exit Sub
End Sub

Public Sub read()
	xlsx()
   [b] rs2.Open("SELECT * FROM D:\cont.xlsx", Conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic, ADODB.CommandTypeEnum.adCmdText)[/b]
	ent = rs2.Fields("ent").Value
	sai = rs2.Fields("sai").Value
	rs2.Close()
	Conn.Close()

	TextBox1.Text = ent
	TextBox2.Text = sai
	Exit Sub
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
	read()
End Sub
End Class	 

As letras a negrito é onde me dá o erro.

Abraços

Share this post


Link to post
Share on other sites
cdaniel.marques

Se for para ler informação de uma célula, e se tiveres o excel instalado, sugiro o seguinte:

No Solution Explorer, com lado direito rato no Projecto -> Add Reference -> Na Tab COM -> Adicionas referencia "Microsoft Excel 12.0 Object Library"

e adicionas o seguinte código:

Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
	Dim oApp As New Excel.Application
	Dim oWBa As Excel.Workbook = oApp.Workbooks.Open("c:\cont.xlsx")
	Dim oWS As Excel.Worksheet = DirectCast(oWBa.Worksheets(1), Excel.Worksheet)

	oApp.Visible = False
	Dim oRng As Excel.Range
	oRng = oWS.Range("A5")
	MsgBox(oRng.Value)


    oWBa.Close()
    oApp.Quit()
End Sub
End Class

Edited by cdaniel.marques

Share this post


Link to post
Share on other sites
Tiago Simões Marques

Só uma dica pequenina.

Em vez de utilizares diretamente classes dessa dll, declara tudo como object, desta forma não precisas de adicionar essa library como referência, e a aplicação fica independente da versão do excel que o utilizador final tenha instalado. O único problemas de declarares tudo como object é a perda do intellisense, mas isso só passas para object depois de teres o código todo feito.

Nota: Podes importar directo

Imports Excel = Microsoft.Office.Interop.Excel

Imports Microsoft.Office.Interop.Excel

A pedido de muitas famílias, deixo um exemplo:

Dim objExcel As Object
objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Open("C:\cont.xlsx")
objExcel.Visible = False
MsgBox(objExcel.Cells(1, 1).Value)
objExcel.Quit()

Cumprimentos,

Edited by Tiago Simões Marques

Tiago Simões Marques

Share this post


Link to post
Share on other sites
Tiago Simões Marques

Boas,

Não te esqueças de tirar as referências e os imports, porque mesmo que não os estejas a utilizar, como fizeste importação deles pode-te dar problemas na mesma.

Cumprimentos,


Tiago Simões Marques

Share this post


Link to post
Share on other sites
Tiago Simões Marques

Estás a alterar o valor das células?

Exemplo:

TextBox1.text = objExcel.Cells(1, 1).Value 'Cell A1
TextBox2.text = objExcel.Cells(1, 2).Value 'Cell A2 Se não me ingano!

Cumprimentos,

Edited by Tiago Simões Marques

Tiago Simões Marques

Share this post


Link to post
Share on other sites
a3deluxe

Boa tarde,

O seguinte código Exporta os dados de varias Textboxs para um ficheiro Excel.

//   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

	Dim oExcel As Object
	Dim oBook As Object
	Dim oSheet As Object

	oExcel = New Excel.ApplicationClass
	oBook = oExcel.Workbooks.Open("d:\teste.xlsx")
	oExcel.Visible = True

       oSheet = oBook.Worksheets(1)

	oSheet.Range("A3").Value = Textbox1.Text
	oSheet.Range("A4").Value = TextBox2.Text
	oSheet.Range("A5").value = TextBox3.Text
	oSheet.Range("A6").Value = TextBox4.Text
	oSheet.Range("A7").Value = TextBox5.Text
	oSheet.Range("A8").Value = TextBox6.Text
	oSheet.Range("A9").Value = TextBox7.Text
	oSheet.Range("A10").Value = TextBox8.Text
	oSheet.Range("A11").Value = TextBox9.Text
	oSheet.Range("A12").Value = TextBox10.Text
	oSheet.Range("A13").Value = TextBox11.Text
	oSheet.Range("A14").Value = TextBox12.Text

 End Sub

Queria simplificar o programa:

para não ter que estar a repetir umas 100 vezes o código em cima.

seria fazer para as restantes colunas.

o meu ficheiro do Excel tenho 3 Colunas:

A , B , C , D , E , F

e em cada coluna 12 linhas.

cada linha corresponde a uma textbox.

queria fazer por exemplo:

-coluna A vai da linha 17 a 28

-coluna B vai 3 ao 14

-coluna C vai 3 ao 14

......

Alguma ideia como fazer??

Edited by a3deluxe

Share this post


Link to post
Share on other sites
Tiago Simões

Bom dia, no seguimento deste post gostava de saber como fazer, para abrir a janela e procurar eu pelo ficheiro em vez de abrir logo: oBook = oExcel.Workbooks.Open("d:\teste.xlsx")

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.