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

  • Thread starter Bình_OverAC
  • Ngày gửi
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
845
7
18
36
Nha Trang
#1
http://support.microsoft.com/default.aspx?scid=kb;EN-US;257819 nói:
Jet Provider Using the Data Link Properties Dialog Box

If you use the ADO Data Control or the Data Environment in your application, then the Data Link Properties dialog box is displayed to gather the necessary connection settings.
1. On the Provider tab, select the Jet 4.0 Provider; the Jet 3.51 Provider does not support the Jet ISAM drivers. If you specify the Jet 3.51 Provider, at run time you receive the following error message:
Couldn't find installable ISAM.
2. On the Connection tab, browse to your workbook file. Ignore the "User ID" and "Password" entries, because these do not apply to an Excel connection. (You cannot open a password-protected Excel file as a data source. There is more information on this topic later in this article.)
3. On the All tab, select Extended Properties in the list, and then click Edit Value. Enter Excel 8.0; separating it from any other existing entries with a semicolon (;). If you omit this step, you receive an error message when you test your connection, because the Jet Provider expects a Microsoft Access database unless you specify otherwise.
4. Return to the Connection tab and click Test Connection. Note that a message box appears informing you that the process has succeeded.
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?
 
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,012
125
63
44
Hà nội
vnuni.net
#2
Đâ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 :)
 
Sửa lần cuối:
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
845
7
18
36
Nha Trang
#3
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. :(
 
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,012
125
63
44
Hà nội
vnuni.net
#4
Hi Bình,

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é
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).

It's not a licensing issue, it's encryption. Password protecting an Excel workbook encrypts its contents on disk and ADO has no way of decrypting it.
According to this KB article:
http://support.microsoft.com/kb/257819/en-us

If the Excel workbook is protected by a password, you cannot open it for
data access, even by supplying the correct password with your connection
settings, unless the workbook file is already open in the Microsoft Excel
application. If you try, you receive the following error message:
Could not decrypt file.
Đâ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à.
 
Sửa lần cuối:
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
845
7
18
36
Nha Trang
#5
Cám ơn các lời khuyên của anh.

hai2hai nói:
À, 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à.
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.
 
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,012
125
63
44
Hà nội
vnuni.net
#6
NguyênBình nói:
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.
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ì ... :)
 
T

Tuanktcdcn

Lão già ham vui
18/6/04
548
51
28
41
Hà Nội
www.bluesofts.net
#7
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é!
 

Thành viên trực tuyến

  • daongocnam0603
  • Huyen2971991KT
  • lilpianovn
  • opera

Xem nhiều