1. Bảo mật VBA trong file .xls
Hỏi:
1. Làm sao để đặt pass trong VBA nhưng khi
mình kích vào thì không hiện hộp thoại nhập Pass Word như thông thường mà hiện
thông báo: Project unviewable.
2. Làm thế nào để đặt pass cho các code VBA của
file excel để khi mở ra không được vì không có chỗ để gõ pass.
3. Tôi có 1 file excel mà khi mở cửa sổ VBA
click vào để hiện mã VBA thì không thấy hiện ô nhập password mà lại hiện dòng
thông báo "Project is unviewable".
Vậy làm cách nào để truy cập mã VBA và cách tạo ra dòng thông báo đó như thế
nào?
Trả lời:
Các
câu hỏi có cùng nội dung, và có lẽ các bạn cũng đã tìm trên Google nhưng
chưa thấy câu trả lời như mong đợi, sau đây có thể là câu trả lời cho bạn, từ Internet và kinh nghiệm cá nhân.
* Cách tạo ra thông báo: Project unviewable
1.
Đặt Pass trong VB:
- Bấm phím Alt +F11 để vào cửa sổ VB Editor,
-
Sau đó chọn Tools > VBAProject >
Propeties...
-
Chọn thẻ Protection,
-
Đánh dấu chọn vào Lock Project for
Wiewing.
-
Gõ Pass vào rồi click OK là xong ...
2.
Share Workbook...
-
Đóng cửa sổ VB Editor mà bạn vừa đặt Pass xong để trở về màn hình excel,
-
Vào menu Tools chọn Share Workbook...
-
Đánh dấu chọn vào Alow Changes by.,.
-
Click OK, OK và OK là xong. Ngay sau đó tên tập tin trên thanh tiêu đề sẽ xuất hiện thêm [Shared] ngay sau tên tập
tin.
-
Bây giờ bạn thử nhấn At + F11 để mở cửa sổ
VBE.
-
Trong cửa sổ Project Explorer và
nhấp vào tên dự án VBA của bạn
để
mở code thì bạn sẽ thấy một
hộp thông báo “Project is unviewable”.
Chú
ý: Khi sử dụng chức năng Share Workbook, một số chức năng của
Excel bị hạn chế như sau:
- Không xóa, ẩn được Sheet…
Chính vì vậy cần cân nhắc khi sử dụng chức
năng này, nên test lại các chức năng của chương trình nếu đặt chế độ bảo mật
kiểu này. Ở chế độ Share Workbook, chức năng Protect Sheet vô tác dụng (bị mờ
đi), vì vậy cũng dùng cách này để bảo vệ bảng tính. Nhiều chương trình trong
Excel hiện nay sử dụng chức năng Share Workbook để bảo mật. Tuy nhiên bảo mật
kiểu này hiện nay cũng không còn an toàn nữa.
* Để có thể truy cập (đăng nhập Pass) và
xem code VBA:
-
Vào menu Tools chọn Share Workbook...
-
Bỏ chọn Alow Changes by...
-
Click OK và Yes.
-
Bây giờ bạn đóng file excel, chọn Yes
để lưu thay đổi.
-
Mở lại, nhấn Alt+F11 để mở cửa sổ
VBE, nhấp vào tên dự án VBA để mở code thì bạn sẽ thấy một hộp
thông báo VBAProject Password yêu cầu nhập Pass.
-
Nhập Pass rồi click OK.
Xong.
2. Bảo mật VBA trong file .xla
Hỏi:
Làm sao để xem file *.xla của excel ?
Trả lời:
Thực chất .xla là một
file chứa macro
(VBA) của excel, cũng có khi
có cả dữ liệu. Bạn open file .xla
như mở một file bình thường.
Sau khi mở xong, dĩ nhiên là bạn sẽ chẳng thấy gì ráo trọi.
Để xem source code của file .xla, bạn nhấn phím : Alt-F11. (hoặc chọn menu : Tools\Macros\Visual Basic Editor)
Trong cái cây hiện ra (thường ở phía bên trái), bạn tìm dòng
mà trong ngoặc tròn có chứa tên file .xla mà bạn đã mở thì đó là nơi bắt đầu
"nội dung" của file .xla đó.
Chú ý : Có một số file .xla có thể bảo vệ không
cho người dùng xem source-code bằng password. Nếu rơi vào
trường hợp này thì... xin chia buồn cùng bạn.
Hỏi:
Làm thế nào để tạo và chỉnh sửa những add-ins *.xla trong excel?
Trả lời:
- Tạo Add-Ins trong excel:
Khi
sử dụng bảng tính Excel, chắc bạn không thể không dùng các hàm được định nghĩa
sẵn như: SUM; COUNT;…Excel có vài trăm hàm như vậy được chia làm nhiều nhóm
theo tính năng khác nhau. Tuy vậy, không phải chúng đã đáp ứng được hết các yêu
cầu của người dùng. Nếu thường xuyên cần phải sử dụng các công thức tính tóan
phức tạp trong bảng tính của mình, bạn có thể tự xây dựng hàm bằng ngôn ngữ lập
trình Visual Basic rồi tập hợp chúng thành một thư viện hàm do người dùng định
nghĩa (User-Defined FunctionsLibrary). Sau đó nạp thư viện này vào Excel qua
công cụ Add-Ins. Như vậy bạn có thể dùng chúng như các hàm được định nghĩa sẵn
trong Excel.
Các
bước thực hiện như sau:
1.
Khởi động Excel, tạo một bảng tính mới (giả sử tên là Book1.xls). Trong Book1,
bạn chỉ cần giữ lại một WorkSheet đầu tiên (xóa bỏ các WorkSheet từ Sheet2 đến
hết, việc làm này nhằm thu gọn thư viện nên bạn có thể bỏ qua).
2.
Chọn lệnh Tools.Marco.Visual Basic Editor (Alt-F11) để chuyển sang môi trường
sọan thảo Visual Basic. Khung Project sẽ liệt kê các thư viện và dự án đang
được mở trong Excel, trong đó có Book1.
3.
Nhấn chuột vào dòng VBAProject (Book1) để chọn dự án này rồi chọn lệnh Insert.
Module để chèn thêm một Module mới vào dự án (Module mới này sẽ có tên là
Module1).
4.
Nhấn đúp vào Module1 để chuyển sang khung sọan thảo bên phải khung Project.
Nhập mã nguồn các hàm của bạn vào khung này. Bạn cần viết chúng theo đúng cú
pháp của ngôn ngữ Visual Basic và chú ý không đặt tên hàm của mình trùng với
các hàm và từ khóa đã có trong Excel.
5.
Chọn lệnh File > Close anh Return to Microsoft Excel (Alt-Q) để quay trở lại
Excel. Bạn có thể kiểm tra sự hoạt động của các hàm mới này ngay trong Book1.
Nếu vẫn còn sai sót, quay lại thực hiện từ bước 2 để sửa mã nguồn của các hàm.
6.
Chọn lệnh File > SaveAs:
-
Trong khung Save in, chọn thư mục: MSOffice\Office\Library (thư mục ngầm định
chứa các thư viện của Excel).
-
Trong khung File Name: Nhập tên tập tin theo ý mình (abc.xla).
-
Trong khung Save As type: Chọn Microsft
Excel Add-In.
-
Nhấn OK để lưu lại thư viện dưới dạng tệp Add-In.
7.
Khởi động lại Excel. Chọn lệnh Tools>
Add-Ins
8.
Trong danh sách Add-Ins available, đánh dấu chọn vào mục có đúng tên thư viện
của mình. Nếu chưa có thì bấm Browse ... để dẫn tới thư mục đã save file ở bước
6.
Kể
từ đây bạn có thể dùng các hàm mới này như những hàm đã được định nghĩa sẵn
trong Excel. Chúng sẽ được liệt kê trong nhóm hàm User Defined. Để sử dụng các
hàm này trên máy tính khác, bạn chỉ việc chép tập tin abc.xla vào thư mục
MSOffice\Office\Library rồi thực hiện các bước 7,8. Muốn bổ sung các hàm mới
vào thư viện, bạn cần nhập thêm mã nguồn vào Module1 của thư viện rồi chọn lệnh
File.Save abc.xla để lưu lại.
Để
người khác không thể mở và sửa chữa được thư viện của mình, trước khi chọn
File. Save, bạn chọn lệnh Tools > VBAProject Properties. Trong hộp thọai
Project Properties, nhấp vào mục Protection; đánh dấu chọn Lock Project for
Viewing; nhập mật khẩu vào dòng Password; nhập lại mật khẩu lần nữa vào dòng
Confirm Password; nhấn OK. Sau này nếu muốn sữa nội dung mã nguồn của thư viện
, bạn phải nhập mật khẩu này mới mở được thư viện.
- Chỉnh sửa add-ins *.xla của excel:
Bạn
mở file đó lên chọn menu Tools ->
Macro -> Visual Basic Editor (hoặc dùng phím tắt Alt+F11). Trong cửa sổ Visual
Basic Editor, bạn sẽ thấy ở của sổ Project
Explorer (Ctrl+R) các Modules trong add-ins đó, click đúp và mở nó lên,
trong của sổ soạn thảo hiện ra, nếu bạn biết các câu lệnh thì có thể chỉnh sửa module
đó theo ý mình được.
Hỏi:
1. Làm thế nào để đặt pass trong VBA cho
file .xla để khi mở source-code thì không hiện hộp thoại nhập Pass Word như
thông thường mà hiện thông báo: Project
unviewable.
2. Làm thế nào để đặt pass cho code VBA của file xla để khi mở ra không được vì không có
chỗ để gõ pass, không thể nhìn thấy gì để có thể xem hay chỉnh sửa source-code?
3. Tôi có 1 file .xla mà khi mở cửa sổ VBA
click vào để hiện mã VBA thì không thấy xuất hiện ô nhập password mà thấy hiện
dòng thông báo "Project is
unviewable".
Cũng không thấy danh sách macro ở khung VBA
Projec, hoặc khi bấm Alt+F8?
Vậy làm cách nào để truy cập mã VBA và làm
cách nào để tạo ra dòng thông báo đó?
Trả lời:
Để
tạo ra dòng thông báo đó, hãy làm theo các bước bên dưới là được:
“Here,
I explain the method that worked for me.
Important
points to remember before starting: This method is based on the concept of
"sharing" an Excel add-in file
It
was tried and tested with Excel 8 (97) and Excel 10 (2002)
…”
Mình hiệu chỉnh bản dịch từ tiếng Anh:
Ở đây, tôi giải thích các phương pháp làm việc
cho tôi.
Điểm quan trọng cần nhớ trước khi bắt đầu :
Phương pháp này dựa trên khái niệm về
"chia sẻ" một tập tin add-in Excel.
Nó đã được thử và thử nghiệm với Excel 8 (97)
và Excel 10 (2002)
Giữ lại một bản sao lưu của ban đầu của bạn - file (xls).
Các dự án VBA khóa với phương pháp này sẽ bị
khóa vĩnh viễn chống lại xem hoặc chỉnh sửa.
Cách duy nhất
để cập nhật mã VBA sẽ chỉnh sửa nó trong bản gốc bảng tính .xls và sau đó tạo ra một tiện ích mới để thay thế cái cũ
hoặc bạn sẽ phải tạo một thủ tục VBA trong một bảng tính khác để thực hiện các
tiện ích add-in có thể nhìn
thấy do đó, nó có thể không chia sẻ.
Kỹ thuật tốt nhất là cũng để bảo vệ dự án VBA
của bạn add-in với một mật khẩu
Phương pháp này xuất hiện để khai thác một lỗi
trong Excel
Bắt đầu với một bảng tính Excel (.xls) mà bạn muốn chuyển thành một add-in.
Lưu bảng tính này như là một add -in. Sử dụng
File > Save As
... sau đó chọn add-in từ "Save As type" danh sách thả xuống.
Đóng bảng tính .xls.
Mở file add-in mới mà bạn vừa tạo
ra.
Mở cửa sổ VBE bằng cách nhấn Alt + F11.
Tìm tập tin add-in của bạn trong cửa sổ Project Explorer và khóa dự án
của bạn với một mật khẩu. Hoặc
mở nếu mật khẩu đã tồn tại.
Chọn đối tượng "ThisWorkbook" và thiết
lập thuộc tính
"IsAddin" = False. Điều này sẽ
thôi ẩn các sheet trong add-in của bảng tính này, như vậy mới thực hiện được bước kế tiếp
dưới đây.
Đóng
cửa sổ Visual Basic xla hiện hành để trở về cửa sổ excel (lúc này vẫn đang trên
file xla)
Chọn Tools > Share Workbook ... , trên tab Editing, đánh dấu vào ô để chia
sẻ bảng tính này. Bấm OK để đóng.
Bấm OK để lưu và chia sẻ bảng tính này.
Nhấn OK để xác nhận thực tế là các macro không
thể được xem trong một bảng tính được chia sẻ.
Xác minh [Shared] xuất hiện trên thanh tiêu đề sau tên tập tin.
Lưu bảng tính này một lần nữa bởi add -in. Chọn File> Save As ... , sau đó ta thấy tên tập tin, có đôi mở rộng .xla
được đặt trong dấu ngoặc kép (xóa hoặc không xóa dấu ngoặc kép cũng được). Chọn add-in từ
"Save as type" danh sách thả xuống .
Nhấn Save, sau đó bấm "Yes để ghi đè lên
tập tin hiện có .
Đóng bảng tính này và nhấn "No" để
không lưu các thay đổi.
Mở
file .xla:
Chọn File .xla (vừa ghi đè) > Open, rồi duyệt để tìm và mở tập tin Add-In mới của bạn. Tiện ích Add-In này sẽ mở giống như
bất kỳ file Excel add-in
với tất cả các sheet ẩn của nó.
Nhấn Alt+F11 để mở cửa sổ VBE.
Tìm add-in của bạn trong cửa sổ Project
Explorer và nhấp vào để mở rộng nó là cây đối tượng.
Bạn sẽ thấy một hộp thông báo có tiêu đề
"Dự án đã bị khoá" hiển thị thông báo như sau: "Project is unviewable". Sẽ không có
một hộp mật khẩu chỉ có một nút “OK” và “Trợ giúp”.
Bạn có thể mở khóa các dự án Add-In VBA bằng cách mở một
bảng tính mới và tạo ra một thủ tục VBA để thiết lập thuộc tính của đối tượng IsAddin của ThisWorkbook bằng False và sau đó unshare the add-in workbook (vào menu Tools
chọn Share Workbook... , bỏ chọn Alow Changes by... , Click OK và Yes)
Hỏi:
Nếu file excel sau khi ghi thành file .xla và tạo "Project unviewable" mà lại muốn quay lại chỉnh sửa code VBA
thì phải làm thế nào?
Trả lời:
Khi
tạo file .xla bạn luôn còn lại file
gốc .xls, bạn chỉnh sửa trong file .xls này rồi tạo lại file .xla (thay thế file .xla cũ).
“Các dự án VBA
khóa với phương pháp này sẽ bị khóa vĩnh viễn chống lại xem hoặc chỉnh sửa. Cách duy nhất để cập nhật mã VBA là chỉnh sửa nó trong bản gốc file .xls, sau đó tạo ra
một tiện ích Add-In mới để thay thế cái cũ.”
Chúc
các bạn thực hiện thành công ý định của mình.
Hết!
*
* *
Hẹn
trong bài viết sau, trong một chuyên mục giới thiệu về các phần mềm thông dụng,
mình sẽ tặng các bạn nào có nhu cầu một số phần mềm gọn nhẹ và hữu ích mà mình
sư tập được như: PM tạo bộ cài đặt (đóng gói PM), PM học nhạc, chép nhạc; PM
dịch từ vựng tiếng Anh; PM camera cho Laptop; PM chép đĩa CD; PM cắt, ghép,
chuyển đuôi video; PM tạo file Help…
Những
PM này thực ra có thể tìm trên Google nhưng không phải lúc nào bạn cũng tìm
đúng bản có Key để cài đặt.
Không có nhận xét nào:
Đăng nhận xét
Trừ những ý kiến bình luận ngoài lề và khiếm nhã, mọi ý kiến đều được hoan nghênh, xin hãy viết ý kiến bằng tiếng Việt có dấu. Cảm ơn.