Page 1 of 1
รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่Excel
Posted: Fri Jun 22, 2012 2:51 pm
by akekorn
สวัสดีครับคุณคนควนและเพื่อนสมาชิกทุกท่าน
วันนี้ผมอยากได้ตัวอย่าง coding แบบ ADO ที่นำข้อมูลจาก Access เข้ามาที่ Excel ไม่ทราบว่าควรเขียนอย่างไร
ผมได้แนบฐานข้อมูลตัวอย่างมาให้ด้วย คือต้องการให้ฐานข้อมูลที่มีอยู่ใน Access import ไปที่ Excel ครับโดยให้ข้อมูลเข้าไปอยู่แบบใน file ผลลัพภ์.xls ครับ
รบกวนขอความรู้ด้วยครับ
ขอบคุณครับ
เอกกร
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Fri Jun 22, 2012 2:54 pm
by akekorn
ฐานข้อมูลครับ
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Fri Jun 22, 2012 2:59 pm
by snasui

ลองดูตัวอย่างจาก Code จาก Link ด้านล่างนี้และลองเขียนมาก่อน ติดตรงไหนถามมาได้เรื่อย ๆ ครับ
Import data from Access to Excel with ADO
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Fri Jun 22, 2012 3:10 pm
by akekorn
คุณคนควนกรุณาเขียนให้ดูเป็นตัวอย่างได้ไหมครับผมลองดูแล้วยังงงๆอยู่เลยครับ
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Fri Jun 22, 2012 3:18 pm
by snasui

คุณ akekorn ควรเขียนมาก่อนครับ สำหรับ VBA แล้ว สมาชิกจำเป็นต้องเขียนมาก่อนเสมอแล้วถามกันเฉพาะที่ติดปัญหาเท่านั้นครับ
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Fri Jun 22, 2012 4:17 pm
by akekorn
คุณคนควนครับผมลองเขียนแล้วแต่มันยังติดที่ไม่ทราบว่าจะใส่ filed เข้าไปยังไงแล้วพอ run ลงมาก็มีติด error รบกวนช่วยดูให้หน่อยนะครับ
ขอบคุณครับ
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Fri Jun 22, 2012 5:05 pm
by snasui

ลองปรับ Code เป็นตามด้านล่างและเปลี่ยน D:\data.mdb เป็นตำแหน่งจริงที่วางไฟล์
Code: Select all
Sub importfile()
Dim conn As ADODB.Connection
Set rs = New ADODB.Recordset
Dim sql As String, sFile As String
sFile = "D:\data.mdb"
sql = "select * from txt"
sConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sFile & ";" & _
"Persist Security Info=False"
' If rs.State = 1 Then rs.Close
rs.Open sql, sConStr
With Sheets("Sheet1")
.Range("A1").CurrentRegion.Offset(1, 0).Clear
.Range("A2").CopyFromRecordset rs
End With
' Do While Not rs.EOF
' rs.MoveNext
' Loop
Set conn = Nothing
Set rs = Nothing
End Sub
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Mon Jun 25, 2012 7:49 pm
by akekorn
ขอโทษที่เข้ามาช้าครับขอบคุณคุณคนควนมากๆนะครับ
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Wed Jun 27, 2012 9:57 am
by akekorn
คุณคนควนครับผมรบกวนอีกข้อได้ไหมครับคือจากตัวอย่างที่คุณคนควนได้ให้มาจะนำเฉพาะข้อมูลมาให้แต่หากผมอยากให้ fieldname ของฐานข้อมูลมาด้วยจะต้องเพิ่ม code อย่างไรครับ
ขอบคุณครับ
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Wed Jun 27, 2012 6:29 pm
by snasui

สามารถดูตัวอย่างการนำ Field มาแสดงได้จาก Link นี้ครับ
http://support.microsoft.com/kb/246335
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Tue Sep 25, 2012 4:29 pm
by akekorn
คุณคนควนครับผมลองดูแล้วแต่ไม่รู้จะแทรกไว้ตรงไหนดีครับ จากโค๊ด
Code: Select all
Sub importfile()
Dim I As Integer
Dim conn As ADODB.Connection
Set rs = New ADODB.Recordset
Dim sql As String, sFile As String
Application.ScreenUpdating = False
sFile = Range("path01").Value
sql = "select * from ccap_booked_daily"
sConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sFile & ";" & _
"Persist Security Info=False"
Sheets("ccap_booked_daily").Select
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("A1").Select
rs.Open sql, sConStr
With Sheets("ccap_booked_daily")
.Range("A1").CurrentRegion.Offset(1, 0).Clear
.Range("A2").CopyFromRecordset rs
End With
' Do While Not rs.EOF
' rs.MoveNext
' Loop
Set conn = Nothing
Set rs = Nothing
Call akekorn
MsgBox "Programe Complete"
End Sub
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Tue Sep 25, 2012 4:47 pm
by akekorn
ผมลองได้เพิ่มโค๊ดตัวนี้เข้าไปแต่โปรแกรมตายครับคุณคนควนรบกวนช่วยดูให้หน่อยครับ
Code: Select all
Sub importfile()
Dim I As Integer
Dim conn As ADODB.Connection
Set rs = New ADODB.Recordset
Dim sql As String, sFile As String
Application.ScreenUpdating = False
sFile = Range("path01").Value
sql = "select * from ccap_booked_daily"
sConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sFile & ";" & _
"Persist Security Info=False"
Sheets("ccap_booked_daily").Select
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("A1").Select
'*****************
I = ActiveCell.Row
Do While Not rs.EOF
For J = 0 To rs.Fields.Count - 1
Cells(I, J + 1).Value = rs.Fields(J)
Next J
rs.MoveNext
I = I + 1
Loop
'********************
rs.Open sql, sConStr
With Sheets("ccap_booked_daily")
.Range("A1").CurrentRegion.Offset(1, 0).Clear
.Range("A2").CopyFromRecordset rs
End With
' Do While Not rs.EOF
' rs.MoveNext
' Loop
Set conn = Nothing
Set rs = Nothing
Call akekorn
MsgBox "Programe Complete"
End Sub
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Tue Sep 25, 2012 7:40 pm
by snasui

ลองปรับ Code ตามด้านล่างดูครับ
Code: Select all
Sub importfile()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sConstr As String
Dim FieldRange As Range
Dim fld As Field, i As Integer
Dim sql As String, sFile As String
Sheets("Sheet1").Range("A1").CurrentRegion.Clear
sFile = "E:\data.mdb"
sql = "select * from txt"
sConstr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sFile & ";" & _
"Persist Security Info=False"
conn.Open sConstr
With Sheets("Sheet1")
Set FieldRange = .Range("A1")
rs.Open sql, conn
For Each fld In rs.Fields
FieldRange.Offset(0, i).Value = fld.Name
i = i + 1
Next fld
.Range("A2").CopyFromRecordset rs
End With
Set conn = Nothing
Set rs = Nothing
End Sub
Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E
Posted: Wed Sep 26, 2012 11:13 am
by akekorn
ทำได้แล้วครับขอบคุณมากๆครับผม