Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tạo hàm để Import dữ liệu từ file Excel vào table Access
#1
Hỏi
- Tôi có một file Excel chứa dữ liệu cần Import vào Access thì làm thế nào ngoài cách Import thông thường?

Trả lời
Yêu càu số trường của table Ac và số cột của Ex là bằng nhau, format giống nhau
Trong Access tạo một modul mới và chép hàm ImExAc vào. Nhớ chọn thêm thư viện Microsoft Excel 11.0 Object Libary
Mã PHP:
Function ImExAc(tblTabName As StringstrFile As StringshSheet As String)
    
'tblTabName la ten table can Import du lieu
    '
strFile la ten duong dan den Workbook Ex co du lieu
    
'shSheet la ten Sheet cua Workbook strFile chua du lieu
    '
Sheet Ex co hang dau tien la hang tieu de(ten truong)
    
Dim Ex As New Excel.Application
    Dim fileEx 
As Workbook
    Set fileEx 
Ex.Workbooks.Open(strFile)
    
Dim Ws As Worksheet
    Set Ws 
fileEx.Worksheets(shSheet)
    
Dim lfirstrowlfirstcolllastrowllastcol As Long
    With Ws
.UsedRange
        lfirstrow 
= .Row
        lfirstcol 
= .Column
        llastrow 
= .Rows(UBound(.Value)).Row
        llastcol 
= .Columns(UBound(.Value2)).Column
    End With
    Dim Rs 
As Recordset
    Set Rs 
CurrentDb.OpenRecordset(tblTabNamedbOpenTable)
    
Dim i As Long
    Dim j 
As Long
    
For lfirstrow 1 To llastrow
        Rs
.AddNew
        
For lfirstcol To llastcol
            Rs
.Fields(lfirstcol) = Ws.Cells(ij)
        
Next
        Rs
.Update
    Next
    fileEx
.Close False
    Set Ex 
NothingRs.Close
End 
Function 

Khi cần Import, gọi hàm như sau
Call ImExAc(“tblDanhsachkhachhang”,”D:\Excel\Danh sach khach hang.xls”,”Danh sach”)


(Đã test thử thành công, viết cho Office 2003)
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname , haquocquan , nhunguyet0103 , dannynguyen1980 , thquanks
#2
Để nhập mới nội dung một table (trong Access) từ một tập tin Excel, ta có thể dùng một trong những cách sau đây:


1. Chọn File \ Get External Data \ Import từ trình đơn Access. Trên hộp thoại Import, chọn mục Microsoft Excel từ danh sách Files of type, rồi chọn tập tin Excel muốn đưa dữ liệu vào Access và bấm OK. Sau đó, theo từng bước hướng dẫn của Access. Tuy nhiên, dữ liệu luôn luôn được đưa vào một table mới, chứ không đưa vào table có sẵn cấu trúc được.
2. Tạo một macro, rồi trên form vẽ một nút lệnh để chạy macro này. Tuy nhiên, các thông số như TableName, FileName cần phải được gõ sẵn, hoặc phải bổ sung thêm một số “kỹ xảo” nữa rất mất công.
3. Cách khác hay hơn: dùng đối tượng DoCmd, một hình thức sử dụng macro của Access trong VBA. Ví dụ: Tạo form như hình 1, gồm có một textbox (đặt tên txtTapTinExcel), một nút lệnh (có dấu 3 chấm, đặt tên cmdTimTapTin), một nút lệnh (để đọc dữ liệu từ tập tin Excel có tên chứa trong ô txtTapTinExcel, đặt tên cmdDocDuLieuTuExcel) và một ActiveX Control có tên dlgTimTapTin. ActiveX Control này được tạo bằng cách bấm nút More Controls (nút cuối cùng) trên ToolBox, rồi chọn mục Microsoft Common Dialog Control. Lần lượt gõ vào các thủ tục xử lý tình huống OnClick của các nút lệnh cmdDocDuLieuTuExcel và cmdTimTapTin (đoạn mã 1). Bạn lưu ý, thứ tự và tên các cột trong tập tin Excel phải giống như cấu trúc table đã khai báo trong Access.

Đoạn mã 1


Mã:

Private Sub cmdTimTapTin_Click()
With dlgTimTapTin
.ShowOpen
txtTapTinExcel = .FileName
End With
End Sub


Mã:

Private Sub cmdDocDuLieuTuExcel_Click()
Dim sTenTable As String
sTenTable = "tbNhanVien" ‘ Vñ duå
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _
sTenTable, txtTapTinExcel, True
End Sub


http://thuthuataccess.com/forum/thread-5234.html
http://thuthuataccess.com/forum/thread-3282.html
http://thuthuataccess.com/forum/thread-5182.html
http://thuthuataccess.com/forum/thread-2267.html
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn
#3
Xem lại thử có gì khác nhau không?
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
Khi cần Import, gọi hàm như sau
Call ImExAc(“tblDanhsachkhachhang”,”D:\Excel\Danh sach khach hang.xls”,”Danh sach”)

Cái này ko hay lắm vì phải lưu file excel theo đường dẫn, và tên file , ...

Làm theo cách chọn theo đường dẫn rồi import là hay happy
Chữ ký của uronmapu Cảm ơn cả nhà

Để học Access không nên ngại đặt câu hỏi


Uron
Reply
Những người đã cảm ơn
#5
Mình import được, mà sao sau khi vào access rồi, mình không đặt khóa chính cho table được vậy bạn?
Giờ làm sao để thiết lập quan hệ giữa các table đó?
Chữ ký của opera Xin chào, mình là opera, Tham gia http://thuthuataccess.com/forum từ ngày 18-10 -12.
Reply
Những người đã cảm ơn
#6
(18-10-12, 04:29 PM)opera Đã viết: Mình import được, mà sao sau khi vào access rồi, mình không đặt khóa chính cho table được vậy bạn?
Giờ làm sao để thiết lập quan hệ giữa các table đó?

Bạn không đặt khóa chính cho table ở field nào đó là do table này đã có dữ liệu mà những dữ liệu của 1 field có sự trùng lặp nên không thể đặt thành khóa chính.
Cách giải quyết: Bạn rà soát lại dữ liệu trên field cần đặt khóa chính rồi chỉnh sửa lại dữ liệu sao cho không còn sự trùng lặp là sẽ đặt được khóa chính.
Chữ ký của nhannt4 Xin chào, mình là nhannt4, Tham gia http://thuthuataccess.com/forum từ ngày 22-07 -12.
Reply
Những người đã cảm ơn
#7
Chào cả nhà

Mình đã làm thử như theo hướng dẫn của XuanThanh mà khi import dữ liệu từ Excel và Access vẫn bị báo lỗi. Có ai biết chỉ giúp mình

Xin cảm ơn

Đây là file của mình

http://www.mediafire.com/download/d29gm2...dulieu.mdb
http://www.mediafire.com/view/t42tmazy3b...tvattu.xls
Chữ ký của accessnewbie Xin chào, mình là accessnewbie, Tham gia http://thuthuataccess.com/forum từ ngày 12-03 -14.
Reply
Những người đã cảm ơn
#8
Newbie đúng là newbie không đọc kỹ hướng dẫn của Xuân Thanh . Bây giờ đã làm được. Cám ơn Xuân ThanhPresent
Chữ ký của accessnewbie Xin chào, mình là accessnewbie, Tham gia http://thuthuataccess.com/forum từ ngày 12-03 -14.
Reply
Những người đã cảm ơn
#9
(10-06-12, 01:26 PM)Xuân Thanh Đã viết: Hỏi
- Tôi có một file Excel chứa dữ liệu cần Import vào Access thì làm thế nào ngoài cách Import thông thường?

Trả lời
Yêu càu số trường của table Ac và số cột của Ex là bằng nhau, format giống nhau
Trong Access tạo một modul mới và chép hàm ImExAc vào. Nhớ chọn thêm thư viện Microsoft Excel 11.0 Object Libary
Mã PHP:
Function ImExAc(tblTabName As StringstrFile As StringshSheet As String)
    
'tblTabName la ten table can Import du lieu
    '
strFile la ten duong dan den Workbook Ex co du lieu
    
'shSheet la ten Sheet cua Workbook strFile chua du lieu
    '
Sheet Ex co hang dau tien la hang tieu de(ten truong)
    
Dim Ex As New Excel.Application
    Dim fileEx 
As Workbook
    Set fileEx 
Ex.Workbooks.Open(strFile)
    
Dim Ws As Worksheet
    Set Ws 
fileEx.Worksheets(shSheet)
    
Dim lfirstrowlfirstcolllastrowllastcol As Long
    With Ws
.UsedRange
        lfirstrow 
= .Row
        lfirstcol 
= .Column
        llastrow 
= .Rows(UBound(.Value)).Row
        llastcol 
= .Columns(UBound(.Value2)).Column
    End With
    Dim Rs 
As Recordset
    Set Rs 
CurrentDb.OpenRecordset(tblTabNamedbOpenTable)
    
Dim i As Long
    Dim j 
As Long
    
For lfirstrow 1 To llastrow
        Rs
.AddNew
        
For lfirstcol To llastcol
            Rs
.Fields(lfirstcol) = Ws.Cells(ij)
        
Next
        Rs
.Update
    Next
    fileEx
.Close False
    Set Ex 
NothingRs.Close
End 
Function 

Khi cần Import, gọi hàm như sau
Call ImExAc(“tblDanhsachkhachhang”,”D:\Excel\Danh sach khach hang.xls”,”Danh sach”)


(Đã test thử thành công, viết cho Office 2003)

Cảm ơn Anh Xuân Thanh rất nhiều về bài viết hữu ích này,Nhưng em không viết Mục Microsoft Excel 11.0 Object Libary
Nằm ở đâu? em vào VBA vào Tool /References nhưng không có Mục đó,nhờ ANh chỉ dùm em!
Chữ ký của ttqt30 Xin chào, mình là ttqt30, Tham gia http://thuthuataccess.com/forum từ ngày 21-10 -14.
Reply
Những người đã cảm ơn
#10
(12-03-14, 11:16 PM)accessnewbie Đã viết: Newbie đúng là newbie không đọc kỹ hướng dẫn của Xuân Thanh . Bây giờ đã làm được. Cám ơn Xuân ThanhPresent

Có File bạn đã Hoàn thành Gửi dùm Mình với Bạn! Cảm ơn thật nhiều Mình cũng đang bị lỗi
email mình là : binnguyen864@yahoo.com
Cảm ơn bạn trước!
Chữ ký của ttqt30 Xin chào, mình là ttqt30, Tham gia http://thuthuataccess.com/forum từ ngày 21-10 -14.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Cài đặt ODBC -nền tảng kết nối Access và nguồn dữ liệu khác Noname 33 19,300 01-12-16, 06:49 PM
Bài mới nhất: atula77
  Xây dựng Class Modules trong Access ( Cơ bản đến Nâng cao) maidinhdan 2 182 13-11-16, 05:32 PM
Bài mới nhất: cpucloi
  Hướng Dẫn Demo tổng hợp xuất Table, Query sang Excel có điều kiện ở vị trí nào cũng được maidinhdan 18 2,790 20-10-16, 11:51 AM
Bài mới nhất: jeck09nt
  Ms Access VBA và Google drive, một vài ý tưởng trong chia sẻ và đồng bộ số liệu... paulsteigel 46 3,855 07-10-16, 02:43 PM
Bài mới nhất: kieu manh
  Ứng dụng đổi tên file trong windows hàng loạt tranthanhan1962 7 1,211 19-09-16, 04:16 PM
Bài mới nhất: maidinhdan

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ