Mở file dử liệu excel có password bằng ADO

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi Bình_OverAC, 16 Tháng hai 2006.

5,231 lượt xem

  1. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    Thưa các bác, Em đang mò mẩm học từng chữ của ADO, và đầu tiên là mở file, tạo kết nối, nhưng các bác xem giúp em ở đoạn bôi đậm ở trên. và thấy rằng hình như việc mở file có password là không dể vậy thì phải làm thế nào đây ạh?
     
    #1
  2. hai2hai

    hai2hai VNUNI Makes a difference

    Bài viết:
    2,012
    Đã được thích:
    128
    Nơi ở:
    Hà nội
    Đây là trả lời chính thức của Microsoft về vụ này. (Nếu ko thỏa mãn thì thôi đừng lăn tăn tìm phương án khác nữa nhé)

    WORKAROUND
    Method 1: Remove the Workbook Password
    To work around this problem, remove the password from the workbook. To do this, follow these steps:
    1. Start Microsoft Excel.
    2. On the File menu, click Open.
    3. Locate and select the workbook with the password.
    4. Click Open.
    5. Enter the password for the workbook and click OK.
    6. On the File menu, click Save As.
    7. Click the drop-down arrow next to Tools, and click General Options.
    8. Delete the text in the Password to open box and click OK.
    9. Click Save. Click Yes when you are prompted to replace the existing file with the same name.
    10. Close the workbook.

    Method 2: Open the File in Excel
    If you have the password protected workbook open in Microsoft Excel, you will be able to successfully create a data source for this workbook. However, you must have this workbook open when you use this data source or when you refresh a query that is pulling data from this data source.

    REFERENCES
    For more information about protecting your workbook, click Microsoft Excel Help on the Help menu, type Protect workbooks from changes in the Office Assistant or the Answer Wizard, and then click Search to view the topic

    Source: http://support.microsoft.com/kb/211378/EN-US/

    Talking more on this topic, please refer to: http://www.thescripts.com/forum/thread13578.html

    Hope that helps! If it is not helpfull, forget this stuck and go w/ another toys :)
     
    Last edited: 17 Tháng hai 2006
    #2
  3. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    Tiếc là em không thỏa mản anh ơi.
    Cám ơn anh nhiều, em sẽ cố gắng tìm cách, hoặc binh đường khác, tệ lăm thì chắc cũng phải theo ông Bill thôi chứ biết sao. :(
     
    #3
  4. hai2hai

    hai2hai VNUNI Makes a difference

    Bài viết:
    2,012
    Đã được thích:
    128
    Nơi ở:
    Hà nội
    Hi Bình,

    Hãy nghĩ đến chi phí cơ hội. Theo anh thì Bình đừng đâm đầu vào bụi dậm làm gì trừ phi em .... viết lại phần mềm MS Excel. (Vì MS đã nói rồi mà...ko tin).

    Đây là lời khuyên chân thành chứ ko có ý gì.Trước kia, anh cũng hay tìm tòi cho bằng được, nhưng nếu gặp đá cứng như kim cương (ko có lối thoát) rồi thì (nếu ko có công nghệ nào chọc thủng được) anh sẽ tìm con đường khác, hoặc nghĩ đến cái khác cho khả thi hơn.

    Còn nếu em vẫn cứ "sẽ cố gắng tìm cách, hoặc binh đường khác" thì ... please, go ahead. No idea!

    Nhưng mà cách thứ 2 anh thấy rõ như ban ngày rồi còn gì nữa mà ko thỏa mãn. Em create 1 OLE Automation object để Open the password protected workbook 1 cách invisible (đợi khi nó hỏi pws thì enter vào - hy vọng là có method open có parameter pws hoặc object đó có property là Password kiểu: ActiveWorkbook.Password = strPassword). Sau đó đừng kill object vội, dùng ADO truy cập vào file Excel đó (sau khi ole object đã được initiated). Khi nào xong việc xử lý dữ liệu thì Kill ole object đi (hoặc kill lúc thoát ứng dụng).

    Nhưng mà đã dùng ADO rồi thì sao ko sài MDB, XML hay các database khác đi. Excel làm gì (Đã thế lại còn ...pws)? Nếu Excel chỉ là các tables thôi thì em chẳng cần PWS, mọi người đọc cũng chẳng hiểu gì đâu, nhất là các fieldname đã được đặt Mã theo tên phân hệ hoặc 1 quy định nào đó (như AA001, AA002,...) và các tables chỉ hold dữ liệu đúng chuẩn tối ưu dữ liệu. Lúc đó, sure luôn là có cho file Excel đó kể cả mở cửa toang hoang thì cũng chả có ai hiểu nổi đâu.

    À, Bình dùng ADO ở môi trường nào thế? Vẫn trong Excel à? Nếu thế thì chắc vẫn phải mở workbook với password và sau đó ADO truy cập bình thường mà.
     
    Last edited: 17 Tháng hai 2006
    #4
  5. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    Cám ơn các lời khuyên của anh.

    Trước khi sài ADO em dùng cách mở workbook với password sau đó không dùng ADO mà truy cập vào sài bình thường nhưng phải đóng lại ngay vì có nhiều người dùng. Chính điểm này làm cho việc code chạy khá chậm do việc phải mở, lưu và đóng workbooks. Nếu dùng database khác em lại sợ đi xa so với Excel thì không muốn lắm. Nhưng em sẽ nghĩ lại vậy. Cám ơn anh nhiều.
     
    #5
  6. hai2hai

    hai2hai VNUNI Makes a difference

    Bài viết:
    2,012
    Đã được thích:
    128
    Nơi ở:
    Hà nội
    Thế nên mới có khái niệm: Desktop database và Client/Server Based Database.

    Đơn giản thôi, thế này nhé. Nếu em vẫn khoái Excel thì... dùng môi trường lập trình là Excel, reports vẫn trên Excel, v.v... chỉ khác là các tables (dữ liệu) em dùng MDB - có thay đổi gì về concepts lập trình đâu mà sợ đi xa với đi gần so với Excel. (Lúc đó MDB của em thuần túy chỉ là Database store thôi, khác gì Excel file đâu). Nhưng mà... đã MDB rồi mà vẫn Excel thì ... :)
     
    #6
  7. Tuanktcdcn

    Tuanktcdcn Lão già ham vui

    Bài viết:
    548
    Đã được thích:
    50
    Nơi ở:
    Hà Nội
    Dùng ADO để mở file EXCEL có Password thì mình cũng chưa làm được. Có nhiều Application của Microsoft mở cũng không được VD như MS Query,...

    Nếu chuyển sang dùng CSDL khác đơn giản là Acces (*.MDB) thì nên lập trình trên Visual Basic (VB), và dùng EXCEL để lập báo cáo cũng được.

    Lập trình trong môi trường EXCEL, cùng ngôn ngữ VB ta có thể khai thác các hàm sẵn có của EXCEL cùng với các đặc tính Define Name, lập các công thức trên Sheet,...
    Với mình thì các PM hiện nay có dùng ngôn ngữ VFP (Visual Foxpro) nếu không dùng kỹ thuật đặc biệt thì EXCEL có thể sánh vai cùng tiến. Đừng nghĩ mình là "Tín đồ" của EXCEL nhé!
     
    #7

Chia sẻ trang này