• Kết nối Excel vs Access bằng ADODB - Truy vấn bị lỗi khi tên sheet trong Excel ko đặt
  • Kết nối Excel vs Access bằng ADODB - Truy vấn bị lỗi khi tên sheet trong Excel ko đặt

    subasatran > 25-10-23, 04:30 PM

    Xin chào A/C/E và mọi người.
    Em có sử dụng kết nối ADODB kết nối Excel và Access để import data từ excel vào access để xử lý dữ liệu.
    Tuy nhiên, khi chạy code import thì bị gặp lỗi như sau :
    Nếu tên Sheet của file Excel được đặt tên thì code chạy ổn(ví dụ như tên sheet là Data).

    Mã PHP:
        Set rs CreateObject("ADODB.Recordset")
        FilePath CurrentProject.Path "\" & FileName & ".xlsx"
        SQL = "
    select from [Data$A1:AA]"
        Strconnect = ("
    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
                    & "
    ;Extended Properties=""Excel 12.0 Xml;HDR=Yes;"";")
        rs.Open SQL, Strconnect, 3, 1 
    Trong trường hợp nếu tên Sheet trong file excel không được đặt tên(có nghĩa là để nguyên mặc định Sheet1).
    Thì code import báo lỗi ở câu lệnh SQL.
    Mã PHP:
        Set rs CreateObject("ADODB.Recordset")
        FilePath CurrentProject.Path "\" & FileName & ".xlsx"
        SQL = "
    select from [Sheet1$A1:AA]"
        Strconnect = ("
    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
                    & "
    ;Extended Properties=""Excel 12.0 Xml;HDR=Yes;"";")
        rs.Open SQL, Strconnect, 3, 1 
    Vậy mọi người cho em hỏi là : 
    a. nguyên nhân báo lỗi là do đâu vậy ?
    b.Làm sao để khi tên sheet của file excel để nguyên mặc dịnh là Sheet1 thì code vẫn chạy được ạ ?do các file excel này được exporrt từ hệ thống và rất nhiều file nên không thể mở từng file để đặt tên sheet được
    Rất cám ơn mọi người.
  • RE: Kết nối Excel vs Access bằng ADODB - Truy vấn bị lỗi khi tên sheet trong Excel ko đặt

    ongke0711 > 25-10-23, 10:51 PM

    Cụ thể câu thông báo lỗi nó là gì bạn?
  • RE: Kết nối Excel vs Access bằng ADODB - Truy vấn bị lỗi khi tên sheet trong Excel ko đặt

    subasatran > 26-10-23, 07:53 AM

    (25-10-23, 10:51 PM)ongke0711 Đã viết: Cụ thể câu thông báo lỗi nó là gì bạn?
    Hi anh.
    Hộp thông báo lỗi như thế này a..
    Run-time error '-2147467259 (80004005)':
    External table is not in the expected format

    Cám ơn Anh.
  • RE: Kết nối Excel vs Access bằng ADODB - Truy vấn bị lỗi khi tên sheet trong Excel ko đặt

    ongke0711 > 26-10-23, 08:15 AM

    Bạn sửa lại tham số này xem thử, cho file xls.

    "Extended Properties=""Excel 8.0;HDR=YES""

    Mấy file dạng dữ liệu này sao bạn không export ra dạng CSV để xử lý, lưu trữ nó nhẹ nhàng hơn không.
  • RE: Kết nối Excel vs Access bằng ADODB - Truy vấn bị lỗi khi tên sheet trong Excel ko đặt

    subasatran > 26-10-23, 09:10 AM

    (26-10-23, 08:15 AM)ongke0711 Đã viết: Bạn sửa lại tham số này xem thử, cho file xls.

    "Extended Properties=""Excel 8.0;HDR=YES""

    Mấy file dạng dữ liệu này sao bạn không export ra dạng CSV để xử lý, lưu trữ nó nhẹ nhàng hơn không.
    Hi a,
    Các file data này được export bởi system/người khác nên em không thay đổi format/định dạng/kiểu file và số lượng file cần import cũng rất nhiều nên việc đặt lại tên sheet cũng không khả thi.
    Nếu sửa lại như anh đã hướng dẫn thì đồng nghĩa với việc mình phải đổi lại định dạng file thành .xls luôn rồi phải ko anh.
    File rawdata em nhận được thì là đuôi .xlsx
  • RE: Kết nối Excel vs Access bằng ADODB - Truy vấn bị lỗi khi tên sheet trong Excel ko đặt

    ongke0711 > 26-10-23, 01:04 PM

    Tôi lấy file Excel mẫu của tôi test thì thấy nó lấy dữ liệu bình thường cả 2 trường hợp, không báo lỗi gì cả.
    Để chắc ăn thì bạn post cái file mẫu thực tế của bạn, chỉ cần 5 dòng dữ liệu là được rồi để xem có phải cái file xuất có vấn đề hay không.
  • RE: Kết nối Excel vs Access bằng ADODB - Truy vấn bị lỗi khi tên sheet trong Excel ko đặt

    subasatran > 27-10-23, 10:03 AM

    (26-10-23, 01:04 PM)ongke0711 Đã viết: Tôi lấy file Excel mẫu của tôi test thì thấy nó lấy dữ liệu bình thường cả 2 trường hợp, không báo lỗi gì cả.
    Để chắc ăn thì bạn post cái file mẫu thực tế của bạn, chỉ cần 5 dòng dữ liệu là được rồi để xem có phải cái file xuất có vấn đề hay không.
    Cám ơn anh @ongke0711
    Để em gởi file mẫu nhơ anh xem giúp với a.
    Trong file em để 2 file excel (1 rawdata từ hệ thống với tên Sheet1 và 1 file đã đổi tên sheet là Data) + 1 file access em để import data.
    Nhờ anh xem giúp với ạ.
    Cám ơn anh nhiều.
    Link file
  • RE: Kết nối Excel vs Access bằng ADODB - Truy vấn bị lỗi khi tên sheet trong Excel ko đặt

    Noname > 30-10-23, 10:20 AM

    Chào bạn, mình đã tải file mẫu về và test. Xác định lỗi không nằm ở việc tên sheet là sheet1 hay là data. Cụ thể là chỉ cần mở file test lên, và gõ gì đó, xóa đi và save lại thì code không lỗi. Tên sheet vẫn là Sheet1 mặc định
    Như vậy ta đổi một cách tiếp cận khác để tìm lỗi là xem file mặc định có bị khóa chức năng external data hoặc tương tự hay không. Có cách nào can thiệp vào 1 file bị khóa data external hay không.
    Nếu vẫn không được bạn thử 1 cách tiếp cận khác chẳng hạn import excel vào thành 1 table, rồi từ table đó chạy code append vào table chính
  • RE: Kết nối Excel vs Access bằng ADODB - Truy vấn bị lỗi khi tên sheet trong Excel ko đặt

    ongke0711 > 30-10-23, 04:08 PM

    Đã xác định là cái file Excel khi xuất từ ứng dụng khác bị lỗi đó bác ( không đúng định dạng Excel chuẩn) nên khi mở lên save lại là nó về đúng định dạng Excel và code sẽ chạy không lỗi.
  • RE: Kết nối Excel vs Access bằng ADODB - Truy vấn bị lỗi khi tên sheet trong Excel ko đặt

    Thanh Thiet > 11-11-23, 04:30 PM

    (27-10-23, 10:03 AM)subasatran Đã viết:
    (26-10-23, 01:04 PM)ongke0711 Đã viết: Tôi lấy file Excel mẫu của tôi test thì thấy nó lấy dữ liệu bình thường cả 2 trường hợp, không báo lỗi gì cả.
    Để chắc ăn thì bạn post cái file mẫu thực tế của bạn, chỉ cần 5 dòng dữ liệu là được rồi để xem có phải cái file xuất có vấn đề hay không.
    Cám ơn anh @ongke0711
    Để em gởi file mẫu nhơ anh xem giúp với a.
    Trong file em để 2 file excel (1 rawdata từ hệ thống với tên Sheet1 và 1 file đã đổi tên sheet là Data) + 1 file access em để import data.
    Nhờ anh xem giúp với ạ.
    Cám ơn anh nhiều.
    Link file

    Vấn đề lỗi của bạn là do tên cột của bảng dữ liệu nguồn trong file Test excel không được có khoảng cách giữa các từ trong cùng 1 cột, bắt buộc phải được viết liền. Bạn thử lại theo cách trên xem được không nhé!

    Chúc bạn thành công.