Translate

Thứ Ba, 11 tháng 9, 2012

Export Excel to Access

Việc xuất dữ liệu từ Excel sang Access, đa số mọi người đều dùng vòng lặp để tiến hành chèn (INSERT INTO) dữ liệu từ Excel sang file Access.
Viết code như thế buộc ta phải khai báo đủ đường: tạo ứng dụng ADODB và tạo ứng dụng Excel. Sau đó mở file Excel đọc và tiến hành lệnh chèn từng dòng, mà mỗi dòng phải ghi rõ từng field.

Lâu rồi, tôi đã viết một sub cho công việc trên. Hôm nay "mông má" lại cho đẹp:


Sub Excel2Access(ExcelPath$, AccessPath$, TableName$, Range$)
    'Const acImport = 0: Const acSpreadsheetTypeExcel9 = 8
    Dim AcApp: Set AcApp = CreateObject("Access.Application")
    If Dir(AccessPath$) <> "" Then Kill AccessPath$
    AcApp.NewCurrentDatabase AccessPath$
    AcApp.DoCmd.TransferSpreadsheet 0, 8, TableName, ExcelPath$, True, Range
End Sub ' truongphu@caulacbovb.com

Private Sub Command1_Click()
    Excel2Access App.Path & "\Book1.xls", App.Path & "\Hoc Sinh.mdb", "DanhSách", "Sheet1!A1:C6"
End Sub ' Nêu dùng ca Sheet ta ghi, vd:"Sheet2!"

Hay không?

1 nhận xét:

  1. Có bạn yêu cầu mở file Access sẵn có.
    Sau đây là Sub cho cả 2 trường hợp: nếu có sẵn file access thì mở, không thì tạo mới.
    Lưu ý rằng trong cả 2 trường hợp trên, nên tạo Table mới là hay nhất; nếu mở file cũ, tên table cũ, sẽ tiến hành ghi nối tiếp

    Code: Export Excel to Access

    Sub ExcelToAccess(ExcelPath$, AccessPath$, TableName$, Range$)
    Set AcApp = CreateObject("Access.Application")
    If Dir(AccessPath$) <> "" Then
    AcApp.OpenCurrentDatabase AccessPath$
    Else ' truongphu@caulacbovb.com
    AcApp.NewCurrentDatabase AccessPath$
    End If
    AcApp.DoCmd.TransferSpreadsheet 0, 8, TableName, ExcelPath$, True, Range
    End Sub

    Trả lờiXóa

Trực tuyến

Mục lục Toàn bộ (theo thứ tự thời gian)

Trực tuyến