Chuyển file dữ liệu Excel sang file Access
gửi bởi truongphu » T.Bảy 31/05/2008 12:01 pm
Thủ thuật: Chuyển file dữ liệu Excel sang file Access
Tác giả: Sree Kumar gợi ý, truongphu
Mô tả: Trong CLBVB cũng có bài viết tương tự, bài viết mầy với code gọn nhẹ hơn. Nhớ thêm các thành phần sau:
Add Project\References:
Microsoft ActiveX Data Objects 2.8 Library
Microsoft ADO Ext 2.8 for DDL and Security
Private Sub Command1_Click()
Call Ex2Ac(App.Path & "\Book1.xls") ‘<– Thay tên file Excel kèm Path thích ho’p
MsgBox "Done"
End Sub
Sub Ex2Ac(ExcelPath$)
‘Sree Kumar B.A, truongphu
Dim catNewDB As New ADOX.Catalog, recNew As New ADODB.Recordset, tbl As New Table
‘ Tao file Access và kêt nôi vo’i nó
catNewDB.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\NewAccess.MDB"
catNewDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\NewAccess.MDB"
‘ Kêt nôi file Excel
Dim cn As New ADODB.Connection, rec As New ADODB.Recordset, fld As ADODB.Field
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & ExcelPath & ";Extended Properties=Excel 8.0;" & "Persist Security Info=False"
rec.Open "Select * from [Sheet1$]", cn, adOpenKeyset
‘ Tên Table
tbl.Name = "Test"
‘ Tùy sô côt và tên côt cua file Excel
For Each fld In rec.Fields
tbl.Columns.Append fld.Name, adVarWChar, 100 ‘<– Thay Ðôi
Next
‘ Tao Table nhu câu trúc file Excel
catNewDB.Tables.Append tbl
‘ Mo’ Table vu`a tao ra
recNew.Open "Test", catNewDB.ActiveConnection, adOpenKeyset, adLockOptimistic
Do Until rec.EOF
With recNew
.AddNew
For Each fld In rec.Fields
‘ Công tác chép sô liêu tu` file Excel sang Access
.Fields(fld.Name) = IIf(IsNull(rec(fld.Name)), "", rec(fld.Name))
Next
.Update
End With
rec.MoveNext
Loop
Set catNewDB = Nothing: Set recNew = Nothing: Set cn = Nothing
End Sub
Sau đây là 2 function tuyệt vời để chuyển dữ liệu từ Excel sang Access với code gọn tối đa
Function tuyệt vời thứ nhất: Nhớ khai báo MS Access 10 hay 11 Object Library
Private Sub ExceltoAccess(ExcelPath$, AccessPath$)
Const acImport = 0: Const acSpreadsheetTypeExcel9 = 8
Dim objAccess As New Access.Application
objAccess.NewCurrentDatabase AccessPath$
objAccess.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Test", ExcelPath$, True
End Sub
Function tuyệt vời thứ hai: Khỏi khai báo, chép là chạy, đương nhiên máy phải có cài Access chuẩn
Private Sub ExceltoAccess2(ExcelPath$, AccessPath$)
Const acImport = 0: Const acSpreadsheetTypeExcel9 = 8
Set objAccess = CreateObject("Access.Application")
objAccess.NewCurrentDatabase AccessPath$
objAccess.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Test", ExcelPath$, True
End Sub
Giống nhau, chỉ khác bên là VBA có IDE hổ trợ, bên dùng VBS
Sử dụng: ví dụ dùng hàm thứ 2
- Private Sub Form_Load()
- Call ExceltoAccess2("E:\win\desktop\Book1.xls", "E:\win\desktop\New.mdb")
- End Sub
Đương nhiên Tập tin Excel trong đường dẫn phải có, còn đường dẫn Access KHÔNG CÓ TẬP TIN để function tạo MỚI!
(Nếu muốn dùng tập tin cũ, trong các function trên, xin thay hàm nhỏ .NewCurrentDatabase bằng .OpenCurrentDatabase)
Bài Chuyển file dữ liệu Excel sang file Access xứng đáng điểm 10/10 vì hàng "độc"
Access qua Excel
gửi bởi truongphu » T.Ba 03/06/2008 3:25 pm
Thủ thuật: Access qua Excel
Tác giả: truongphu
Mô tả: Access qua Excel
Sau đây là 2 function tuyệt vời để chuyển dữ liệu từ Access sang Excel với code gọn tối đa
Function tuyệt vời thứ nhất: Nhớ khai báo MS Access 10 hay 11 Object Library
Private Sub Access2Excel(AccessPath$, ExcelPath$)
Const acExport = 1: Const acSpreadsheetTypeExcel9 = 8
Dim objAccess As New Access.Application
objAccess.OpenCurrentDatabase AccessPath$ ‘ Câu sau có Test là tên Table
objAccess.DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Test", ExcelPath$, True
End Sub
Function tuyệt vời thứ hai: Khỏi khai báo, chép là chạy, đương nhiên máy phải có cài Access chuẩn
Private Sub Access2Excel2(AccessPath$, ExcelPath$)
Const acExport = 1: Const acSpreadsheetTypeExcel9 = 8
Set objAccess = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase AccessPath$ ‘ Câu sau có Test là tên Table
objAccess.DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Test", ExcelPath$, True, "Sheet2!"
End Sub
Giống nhau, chỉ khác bên là VBA có IDE hổ trợ, bên dùng VBS
Sử dụng: ví dụ dùng hàm thứ 2
Số dòng Bật/Tắt | Mở rộng/Thu gọn | Chọn tất cả
- Private Sub Form_Load()
- Call Access2Excel2("E:\win\desktop\new.mdb", "E:\win\desktop\new.xls")
- End Sub
Đương nhiên Tập tin Access trong đường dẫn phải có, còn đường dẫn Excel KHÔNG CÓ TẬP TIN để function tạo MỚI!
"Độc không?"
THANK’S FOR SHARE !
Bình luận mới nhất