Núi cao sông rộng cho lòng thảnh thơi …

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

  1. Private Sub Form_Load()
  2. Call ExceltoAccess2("E:\win\desktop\Book1.xls", "E:\win\desktop\New.mdb")
  3. 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ả

  1. Private Sub Form_Load()
  2. Call Access2Excel2("E:\win\desktop\new.mdb", "E:\win\desktop\new.xls")
  3. 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 !

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: