ส่งออกข้อมูลจากตารางเป็นไฟล์ excel
กระทู้เก่าบอร์ด อ.Yeadram

 1,796   9
URL.หัวข้อ / URL
ส่งออกข้อมูลจากตารางเป็นไฟล์ excel

ผมต้องการส่งออกข้อมูลจากตาราง(TABLE1) ให้เป็นไฟล์ excel 6 ไฟล์ คือ
168.xls,190.xls,254.xls,167.xls,180.xls,382.xls

ซึ่งผมทำโดยการสร้างแบบสอบถามแล้วใส่เงื่อนไข(DEP_ID)ทีละครั้ง
แล้วส่งออกข้อมูลเป็นไฟล์ excel ทำ6ครั้งจึงจะครบ 6 ไฟล์
ถ้าต้องการสร้างฟอร์มและสร้างปุ่มคำสั่งแล้วให้กดปุ่มคำสั่งครั้งเดียวให้ส่งออกไฟล์จนครบตามฟิลย์ DEP_ID ต้องเขียนโค็ดหรือคำสั่งยังไงครับ
รบกวนอาจาร์ยทุกท่านด้วยครับ

9 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R21094

ขอโทษครับลืมส่งไฟล์ TABLE1
2 @R21095
ก็สร้างมาโคร

สั่งให้ Export To Excel โดยกำหนดคำสั่งละ 1 ตาราง ต่อกันลงมาเรื่อยๆ จนครบทุกตารางที่กำหนด

จากนั้นก็สร้างที่เอามาโครอันนี้ไปฝัง
3 @R21096
ขอบคุณอาจาร์ยมากครับ
แต่จำนวนตารางที่จะส่งออกไม่แน่นอนครับบางครั้งต้องทำ20ถึง30ครั้ง
บางครั้งบางหน่วย(DEP_ID)ก็ไม่มี
4 @R21098
แล้วใช้อะไรเป็นตัวกำหนดว่าต้อง Export ตารางไหนบ้าง

ถ้าไม่มีเงื่อนไขที่แน่นอน ก็อาจต้องใช้ VBA ครับ
5 @R21099
ต้องขอโทษอาจาร์ยด้วยครับผมอาจจะถามไม่เครียร์
ใช้ฟิลย์ DEP_ID ในตาราง TABLE1 ครับ
เช่นในตาราง TABLE1 มีฟิลย์ DEP_ID อยู่ 6 หน่วย คือ
168,190,254,167,180,382 (ไม่แน่นอน บางครั้งอาจ 20 หน่วย)
ความต้องการส่งออกข้อมูลจากตาราง(TABLE1) ให้เป็นไฟล์ excel 6 ไฟล์ คือ
168.xls,190.xls,254.xls,167.xls,180.xls,382.xls
รบกวนอาจารย์ด้วยนะครับ
6 @R21106
มีขั้นตอนดังนี้นะครับ
1. สร้างตารางชื่อ tblTemp โดยสำเนาเฉพาะโครสร้างของ TABLE1 มา
2. สร้างคิวรีชื่อ qryGroup โดยดึงเฉพาะฟิลด์ DEP_ID ของตาราง TABLE1 มา
3. กำหนด Unique Value ให้ qryGroup ด้วย
4. ที่ฟอร์มที่เราต้องการคลิกปุ่มเพื่อสั่ง Export to Excel ให้ใส่ปุ่มเข้าไป 1 ปุ่ม
5. ที่ปุ่มนี้ให้ใส่ Code นี้เข้าไป

Private Sub ชื่อปุ่ม_Click()
    Dim objRecordset As ADODB.Recordset
    Set objRecordset = New ADODB.Recordset
    Dim value As Variant
    Dim myGroup As Integer

objRecordset.ActiveConnection = CurrentProject.Connection
objRecordset.Open ("qryGroup")

While objRecordset.EOF = False

        myGroup = objRecordset.Fields(0).value
        DoCmd.RunSQL " INSERT INTO tblTemp " _
        & "SELECT * " _
        & "FROM TABEL1 " _
        & "WHERE DEP_ID = " & myGroup & ";"
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "tblTemp", myGroup
        DoCmd.RunSQL "DELETE * FROM tblTemp;"
    objRecordset.MoveNext
Wend
    
End Sub

7 @R21107
อ้อ! ที่หน้าต่าง VBE (หน้าต่างที่ใช้ใส่ Code น่ะ)

ให้ไปกำหนด Reference: Microsoft ActiveX Data Objects Library ด้วย
มันจะมีหลายตัว ให้เลือกเวอร์ชั่นสูงๆ เอาไว้ตัวเดียวก็พอ

คำสั่งคือ
Tools > References
8 @R21131
ต้องขอโทษอาจาร์ยด้วยครับ
ผมไม่รูว่าทำไมรูปที่ upload รูปแรกถึงได้เปลี่ยนไป
ผมจึงขอ upload รูปใหม่ครับ
ส่วนโค็ดที่อาจาร์ยกรุณาทำให้ผมจะลองเอาไปใช้ดูได้ผลยังไงจะกลับมารายงานครับ
9 @R21132
ได้แล้วครับ
แบบนี้ครับ
Private Sub Command3_Click()
Dim objRecordset As ADODB.Recordset
    Set objRecordset = New ADODB.Recordset
    Dim value As Variant
    Dim myGroup As Integer

objRecordset.ActiveConnection = CurrentProject.Connection
objRecordset.Open ("qryGroup")

While objRecordset.EOF = False
        myGroup = objRecordset.Fields(0).value
        DoCmd.SetWarnings False
            DoCmd.Hourglass True
        DoCmd.RunSQL " INSERT INTO tblTemp SELECT * FROM TABLE1 WHERE DEP_ID = " & myGroup & ";"
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "tblTemp", myGroup
        DoCmd.RunSQL "DELETE * FROM tblTemp;"
        DoCmd.Hourglass False
            DoCmd.SetWarnings True
        objRecordset.MoveNext
Wend
End Sub
ขอบพระคุณอาจาร์ยมากเลยครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2726s