import ชื่อ cell และค่า
กระทู้เก่าบอร์ด อ.Yeadram

 1,573   7
URL.หัวข้อ / URL
import ชื่อ cell และค่า

ผมมีข้อมูลใน Excel และต้องการ import ค่ามาใส่ access ให้มี 2 field ได้แก่ cell_ name(ตำแหน่ง cell ใน excel) และ cell_value (ค่าใน cell) ทำได้มั้ยครับ และทำอย่างไร เช่น
cell_name      cell_value
A1                   12
A2                    5
B1                   1.5
B2                   0.12
C1                   8
C2                   3


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

1 @R19832
ถ้าไม่มีปัญหาเรื่องของ Format ของข้อมูล และได้ออกแบบตารางใน MS-Access ไว้แล้วโดยมี 2 ฟิวด์ที่พูดถึงนี้ เมื่อตอนเรา Import File มา มันจะมีถามด้วยว่าจะ Import มาเป็นตารางใหม่ หรือ Import เข้าในตารางที่มีอยู่แล้วใน MS-Access
2 @R19833
คือว่า ข้อมูลใน excel มันจะมี ชื่อ cell และ ค่าใน cell ดังรูปครับ ผมต้องการ code หรือวิธีการใดๆก็ตาม สำหรับ import ค่าทั้งสองมาเก็บใน access โดยให้ Field cell_name เก็บชื่อของ cell และ Field cell_value เก็บค่าใน cell นั้นๆ ครับ



3 @R19837
ทำได้ครับ โค้ดหลักที่สำคัญอยู่ที่คำตอบแรกใน http://stackoverflow.com/questions/3875415/loop-through-each-cell-in-a-range-of-cells-when-given-a-range-object โค้ดนี้จะเขียนบน Excel เอง หรือจะใน Access เองก็ได้ครับ ถ้าเขียนใน Excel ก็ต้องเรียกเปิดฐานข้อมูล Access ถ้าเขียนใน Access ก็ต้องเรียกอ่านจากไฟล์ Excel ด้วย GetObject( ) ลองหาในกระทู้เก่านะครับ
4 @R19838
รบกวนเขียน code ให้หน่อยครับ
สมมุติรายละเอียดดังนี้
File path:                    C:\Data.xlsx
Worksheet name:       data1
Range:                      A1:Z100
5 @R19839
ใครว่างช่วยเขียนแทนหน่อย ช่วงนี้ผมไม่ว่างมาเขียนรายละเอียดนะครับ
6 @R19843
- สามารถทำได้โดยการดึงคำสั่งของ MS Excel มาใช้งานรวมกับคำสั่ง DAO
- สร้างตารางใหม่สมมุติชื่อ Tb_Import ใน MS Access พร้อมฟิลด์ด้วยตัวเอง หรืออาจเขียนฟังก์ชั่นสำหรับสร้างตารางและฟิลด์ ก็ต้องเขียนเพิ่มเอง
- เมื่อได้สร้างตารางพร้อมฟิลด์ที่ต้องการรับค่าแล้ว ก็เขียนคำสั่งเพื่อ Import ข้อมูลจากไฟล์เป้าหมายลงตารางเป้าหมายดังนี้:
'----------------Code Start----------------
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Tb_Import") ' ชื่อตารางเป้าหมาย

    Dim objExcel As Object
    Set objExcel = CreateObject("Excel.Application")
    Dim objBook As Object
    Set objBook = objExcel.Workbooks.Open("C:\Data.xlsx") ' พาธและชื่อไฟล์ MS Excel เป้าหมาย
    
    Dim sCount As Integer
    sCount = objBook.Worksheets.Count
    Dim i As Integer
    For i = 1 To sCount
        If objBook.Sheets(i).Name = "data1" Then ' ชื่อ Sheet ที่ต้องการข้อมูลบนไฟล์ MS Excel
            Exit For
        End If
    Next

    Dim objSheet As Object
    Set objSheet = objBook.Worksheets(i)
    Dim rRng As Object
    Set rRng = objSheet.Range("A1:Z100") ' กำหนดช่วงข้อมูลที่ต้องการของเซลในไฟล์ MS Excel
    Dim rCell As Object
    For Each rCell In rRng.Cells
        rs.AddNew
        rs(0) = Replace(rCell.Address, "$", "") ' rCell.Address คือค่าตำแหน่งของเซลบนไฟล์ MS Excel แต่จะติดอักษร $ มาด้วย ดังนั้นจึงต้องตัดทิ้งก่อน
        rs(1) = rCell.Value ' rCell.Value คือ ข้อมูลในตำแหน่งเซลนั้นๆ
        rs.Update
    Next rCell
    
    objExcel.ActiveWorkbook.Close ' ทำการปิดไฟล์ MS Excel เมื่อเสร็จ
    objExcel.Quit ' ทำการปิดโปรแกรม MS Excel
    Set rRng = Nothing
    Set objSheet = Nothing
    Set objBook = Nothing
    Set objExcel = Nothing
    
    rs.Close: Set rs = Nothing
    Set db = Nothing
    MsgBox "Import Completed Successfully"
'-----------------Code End-----------------

ปรับใช้ดูนะครับ

ปล. อันนี้นอกเรื่องหน่อย ไม่ได้เกี่ยวกับกระทู้นี้นะครับ คือพักนี้เหมือนมีนักศึกษาเข้ามาถามเพื่อทำงานส่งป่าวก็ไม่รู้ บางทีผมก็เริ่มคิดว่าการเขียนโค๊ดให้แบบนี้เหมือนกับรับทำการบ้านออนไลน์หรือเปล่าก็ไม่รู้ หากเป็นคนที่จะเอาไปใช้งานจริงก็ยินดีไม่เป็นไรนะครับ ถือว่าไม่ได้ศึกษามา แต่หากเป็นนักศึกษา ผมขอให้ใช้สิ่งที่เรียนมาคิดก่อนครับ การเรียนแบบ copy paste ส่งอาจารย์ สุดท้ายแล้วจะไม่ได้อะไรเลย
7 @R19845
ขอบคุณมากครับคุณ TTT จะลองปรับใช้ดู ขอแนะนำตัวครับ ผมไม่ใช่นักศึกษาครับ ผมรับราชการเป็นเภสัชกร ในโรงพยาบาลของรัฐแห่งหนึ่ง แต่มีความสนใจศึกษาหาความรู้เรื่อง Database โดยเฉพาะ MS Access,Mysql มีความรู้แค่พื้นฐานครับ ความรู้บางอย่างมันเกินความสามารถของผม จึงต้องรบกวนถามผู้รู้ใน board นี้ ซึ่งก็ช่วยได้มากเลยครับ ต้องขอขอบคุณทุกๆท่านที่ให้ความรู้อย่างที่หาได้ยากจริงๆจากตำรา
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3336s