:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่Excel

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่Excel

#1

Post by akekorn »

สวัสดีครับคุณคนควนและเพื่อนสมาชิกทุกท่าน
วันนี้ผมอยากได้ตัวอย่าง coding แบบ ADO ที่นำข้อมูลจาก Access เข้ามาที่ Excel ไม่ทราบว่าควรเขียนอย่างไร
ผมได้แนบฐานข้อมูลตัวอย่างมาให้ด้วย คือต้องการให้ฐานข้อมูลที่มีอยู่ใน Access import ไปที่ Excel ครับโดยให้ข้อมูลเข้าไปอยู่แบบใน file ผลลัพภ์.xls ครับ
รบกวนขอความรู้ด้วยครับ

ขอบคุณครับ
เอกกร
You do not have the required permissions to view the files attached to this post.
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#2

Post by akekorn »

ฐานข้อมูลครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#3

Post by snasui »

:D ลองดูตัวอย่างจาก Code จาก Link ด้านล่างนี้และลองเขียนมาก่อน ติดตรงไหนถามมาได้เรื่อย ๆ ครับ

Import data from Access to Excel with ADO
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#4

Post by akekorn »

คุณคนควนกรุณาเขียนให้ดูเป็นตัวอย่างได้ไหมครับผมลองดูแล้วยังงงๆอยู่เลยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#5

Post by snasui »

:lol: คุณ akekorn ควรเขียนมาก่อนครับ สำหรับ VBA แล้ว สมาชิกจำเป็นต้องเขียนมาก่อนเสมอแล้วถามกันเฉพาะที่ติดปัญหาเท่านั้นครับ
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#6

Post by akekorn »

คุณคนควนครับผมลองเขียนแล้วแต่มันยังติดที่ไม่ทราบว่าจะใส่ filed เข้าไปยังไงแล้วพอ run ลงมาก็มีติด error รบกวนช่วยดูให้หน่อยนะครับ

ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#7

Post by snasui »

:D ลองปรับ 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
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#8

Post by akekorn »

ขอโทษที่เข้ามาช้าครับขอบคุณคุณคนควนมากๆนะครับ
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#9

Post by akekorn »

คุณคนควนครับผมรบกวนอีกข้อได้ไหมครับคือจากตัวอย่างที่คุณคนควนได้ให้มาจะนำเฉพาะข้อมูลมาให้แต่หากผมอยากให้ fieldname ของฐานข้อมูลมาด้วยจะต้องเพิ่ม code อย่างไรครับ

ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#10

Post by snasui »

:D สามารถดูตัวอย่างการนำ Field มาแสดงได้จาก Link นี้ครับ http://support.microsoft.com/kb/246335
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#11

Post 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
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#12

Post 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
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#13

Post by snasui »

:D ลองปรับ 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
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

Re: รบกวนขอการเขียนโปรแกรมแบบ ADOนำข้อมูลจากAccessเข้าไปที่E

#14

Post by akekorn »

ทำได้แล้วครับขอบคุณมากๆครับผม
Post Reply