Làm cách nào để kiểm tra / xem macro Excel trước khi bật macro macro cho một trang tính?


13

Thỉnh thoảng tôi nhận được một tệp xls có chứa macro mà tôi nên sử dụng. Nếu tôi không hoàn toàn tin tưởng vào người gửi, tôi muốn xem xét nguồn của macro để xác minh rằng nó thực sự chỉ làm những gì nó được cho là đúng.

Tuy nhiên, trong Excel 2010, nút "chỉnh sửa" trong "xem macro" bị tắt trừ khi lần đầu tiên tôi bật macro cho trang tính - nhưng nếu lần đầu tiên tôi bật macro thì tôi chỉ có thể tìm hiểu về mã độc sau khi mã đó kết thúc đang chạy...

Làm cách nào tôi có thể xem nguồn của macro trước khi bật macro cho tài liệu?

Câu trả lời:


11

Bạn có thể xem tất cả các macro trong tài liệu bằng cách sử dụng tab Nhà phát triển trong Word để giúp bạn dễ dàng truy cập vào các thói quen Visual Basic được nhúng trong tài liệu.

Trước tiên, bạn cần đảm bảo rằng Tab Nhà phát triển được bật. Đi tới Tệp -> Tùy chọn sau đó:

tab nhà phát triển

Trên Tab Nhà phát triển sẽ xuất hiện, bây giờ sẽ có nút "Visual Basic" mà bạn có thể nhấp để vào trình chỉnh sửa Visual Basic.

Duyệt qua cây tài liệu ở bên trái trình soạn thảo, bạn sẽ có thể thấy tất cả các mã và mô-đun được nhúng trong tài liệu mà không cần phải bật macro.

Tôi có xu hướng làm điều này với các tài liệu tôi không tin tưởng.

Lưu ý: Tôi đã thực hiện điều này trong Word, tính năng tương tự có sẵn trong Excel và tùy chọn để bật tính năng này ở cùng một nơi.


9

Trong tất cả các phiên bản của tất cả các ứng dụng Office từ năm 2003 và có thể sớm hơn, Alt+ F11sẽ mở Trình chỉnh sửa VBA. Không cần bật tab 'Nhà phát triển' trong Dải băng cho Office 2007 và mới hơn để làm việc này.


2
Điều đáng chú ý là trong nhiều phiên bản (ít nhất là Excel), Alt+ F11có thể khiến ! SECURITY WARNING ... Enable Contentbiểu ngữ "" biến mất, ngụ ý rằng việc thực thi mã hiện đã được bật. Điều này là sai lệch. Bạn có thể demo điều này bằng cách tạo một tài liệu với một on_open()mô-đun. Bạn sẽ có thể Alt+ F11vào và kiểm tra mã mà không cần bắn sự kiện.
Peter Vandivier

0

Mặc dù câu trả lời từ Mokubai và hBy2Py có vẻ rất hay và thực sự cho phép bạn hiển thị Trình chỉnh sửa VBA, nhưng có vẻ như ít nhất trong Excel từ Microsoft Office Professional Plus 2016 vẫn không cho phép bạn xem mã.

Tôi tình cờ sở hữu phiên bản đó và tôi chắc chắn rằng mình đã nhận được một XLS độc hại và muốn kiểm tra nó. Sau khi mở nó trong Excel, nó đã mở ở chế độ an toàn như bình thường và tất nhiên tôi không có ý định loại bỏ chế độ đó. Khi tôi mở Trình soạn thảo VBA như những người trả lời khác đã chỉ ra, tôi đã được trình bày với ... Trình soạn thảo VBA trống . Bảng điều khiển "Project explorer" hiển thị một cách hữu ích "Không có dự án mở" mặc dù tôi chưa đóng tệp XLS. Chỉ để thử nghiệm, tôi đã mở tài liệu thứ hai (một trong những công việc của tôi) và nó ngay lập tức xuất hiện trong VBA Editor và hoàn toàn không có VBA. Tuy nhiên, tài liệu từ internet không được liệt kê trong Trình chỉnh sửa VBA .

Tôi đã lãng phí thời gian để cố gắng tìm hiểu tại sao lại như vậy, và không tìm thấy lý do. Có vẻ như phiên bản Excel của tôi đơn giản là không gửi các mô-đun VBA đến Trình chỉnh sửa VBA khi tài liệu được tải ở chế độ an toàn. Đáng buồn thay, VBA Editor thiếu một số tính năng "mở VBA từ Tài liệu Office", vì vậy rõ ràng Excel là bộ não ở đây và nó phải giải nén / giải mã / bất cứ điều gì XLS đầu tiên.

Giải pháp hóa ra khá đơn giản.

  1. Bấm Ribbon-> Developer->MacroSecurity
  2. cách khác, File-> Options-> SecurityCenter(nhóm tùy chọn cuối cùng) -> Settings-> Macros)
  3. Ghi nhớ (hoặc ghi lại) các cài đặt hiện tại là gì
  4. Thay đổi chúng thành "Chặn tất cả các macro mà không cần thông báo"
  5. Xác nhận, đóng, mở lại tài liệu, mở lại VBA Editor
  6. Khôi phục cài đặt gốc trong khi bạn chơi xong với lửa

Tác dụng:

  • thông báo không xuất hiện
  • tài liệu đã được tải đầy đủ
  • không có macro được thực thi
  • VBA Editor đã nhận được các mô-đun và trình bày tất cả các mã

Trong trường hợp bạn tò mò: có, nó thực sự là độc hại, ví dụ nhỏ:

Function marcopoloko()
marcopoloko = Left("CM to inches converter", 2) + Right("fed.ex", 4) + "e  " + "/c" + numneroop + amagilocard
End Function

'Sub Workbook_Open()
'If xlTickMarkOutside > 0 Then
'Shell marcopoloko + """", xlXmlExportSuccess
'End If
'End Sub

BTW. như bạn có thể thấy tôi đã nhận xét điểm nhập cảnh và lưu lại tài liệu, trong trường hợp tôi cho phép các macro chạy vào một thời điểm nào đó sau đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.