import from excel sheet 2
กระทู้เก่าบอร์ด อ.Yeadram

 2,317   7
URL.หัวข้อ / URL
import from excel sheet 2

คือผมมีปัญหาในการเขียน code หรือ macro ในการ import ข้อมูล จาก
excel ที่ไม่ได้อยู่ sheet แรก

คือผมเขียนแบบ basic
DoCmd.TransferSpreadsheet
มันจะ import มาแต่ sheet แรก
แต่ผมต้องการ import sheet ที่ 2,3... ด้วย

ใครพอแนะนำได้ไหมครับ

ขอบคุณล่วงหน้า

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

1 @R05109
อันนี้เขียน VBA ครับง่ายสุด โดยมีเงื่อนไขว่า ชื่อไฟล์จะต้องชื่อเดิม,ชื่อ Sheet จะต้องชื่อเดิม

ขอเวลาไปหาตัวอย่าง Code แป็บหนึ่ง จริงๆ แล้วผมได้สร้างเป็น Module ไว้หลายแบบ สำหรับ Link กับข้อมูลได้ หลากหลายแต่ขอกั๊กไว้หน่อยคงไม่ว่ากันนะ
เดี๋ยวมา
2 @R05110
เรียน สมาชิกทุกท่าน

ในตัวอย่างที่ผมส่งไปให้ที่ accboard@gmail.com มีตัวอย่าง Code อื่นๆ ติดไปด้วยเผื่อว่า สมาชิกท่านใดต้องการจะนำไปต่อยอดอีก

ลองแกะดูนะครับ
3 @R05125
อาจไม่อัตโนมัติเท่าไหร่ แต่ก็พอให้ทำงานได้ ก็คือเลื่อน sheet2 มาไว้เป็นลำดับแรกใน workbook แล้ว save ไฟล์ไป ก่อนสั่งด้วย DoCmd.TransferSpreadsheet   

สรุปคือ จะ Import Sheet ไหน ก็เลื่อนมาไว้เป็นอันดับแรกเสีียก่อน
4 @R05133
เข้าใจครับ แต่อยากได้แบบอัตโนมัติหนะครับ เพราะจะทำไปให้ user ใช้
เดี๋ยวลองหา code ดู อาจต้องยุ่งยากสักหน่อย

ก็อาจจะใช้ผลมผสานกับ code ที่คุณ ศรีนคร แนะนำมา

คุณศรีนครครับ
พอดี code ที่โหลดมามีอยู่บรรทัดนึงเขียนว่า sleep
เข้าใจว่าเป็น api แต่มันเอาไว้ทำอะไรครับ ใช่เป็นการหน่วงเวลาหรือเปล่า
5 @R05135
ถูกต้องครับ
ผมใส่ไปเพื่อหน่วงเวลาเล็กน้อย แล้วให้ฟอร์มปิดตัวเอง มันจะให้ความรู้สึกที่ดีกว่า ที่ Import แล้วปิดไปเลย หรือ เวลาที่ User โอนข้อมูลเสร็จแล้วค่อยปิด

ประมาณว่า เป็นส่วนหนึ่งของ GUI..
6 @R05138
ลองแกะดูครับ ผมเคยใช้เขียน import / export ข้อมูลจากเอ็กซ์เซลไฟล
เดี๋ยวส่งไฟล์ไปที่ accboard@gmail ไว้ให้ครับ

' Excel object variables
   Dim appExcel As Excel.Application
   Dim Wbk As Excel.Workbook
   Dim wks As Excel.Worksheet
   Dim sFileImport As String
   Dim i As Integer
   Dim j As Integer
   
    Dim dbs As DAO.Database
    Dim rst1 As DAO.Recordset

   Const cTabTwo As Byte = 2   'Sheet 1 = 1 ; Sheet 2 = 2 Sheet 3 = 3
   Const cStartRow As Byte = 2
   Const cStartColumn As Byte = 1
   
    DoCmd.SetWarnings False
    DoCmd.RunSQL "DELETE * FROM " & "Table1" & ";"
    DoCmd.SetWarnings True
   
    sFileImport = CurrentProject.Path & "\EXCELSheet.xls"


   Set appExcel = CreateObject("Excel.Application")
   Set Wbk = appExcel.Workbooks.Open(sFileImport)
   Set wks = appExcel.Worksheets(cTabTwo)
   
    Set dbs = CurrentDb
    Set rst1 = dbs.OpenRecordset("Table1")
    With rst1
   
   For i = 1 To wks.UsedRange.Rows.Count
   .AddNew
    !f1 = wks.Cells(i, 1)
    !f2 = wks.Cells(i, 2)
    .Update

    Next i
End With

rst1.Close
dbs.Close
Set wks = Nothing
Set Wbk = Nothing
appExcel.Workbooks.Close

End Sub
7 @R05151
ขออนุญาติ reply ก่อนนะครับ
วันอังคารจะลองแกะดู แล้วจะมารายงานผล
แทงกิ๊วขอรับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.6816s