2013-04-30 19 views
8

Tôi đang mở bảng tính bằng VBA và một vài sổ làm việc chứa mã bắt đầu thực thi khi Workbook_Open() được gọi.Mở sổ làm việc từ VBA và vô hiệu hóa mã Workbook_Open()?

Làm cách nào để mở sổ làm việc bằng VBA nhưng dừng mã tự động thực thi? Tôi chỉ mở sổ làm việc để xem xét các công thức trong trang tính- Tôi không muốn bất kỳ việc thực thi mã nào.

+0

Bạn luôn có thể đặt bảo mật macro để chặn tất cả các macro. Điều này có lẽ không lý tưởng, nhưng nên làm những gì bạn đang yêu cầu. – Gaffi

Trả lời

10

Bạn có muốn thử vô hiệu hóa Sự kiện trước khi bạn mở bảng tính trong VBA và sau đó tái tạo điều kiện cho họ cho phần còn lại của các mô-đun? Hãy thử sử dụng một cái gì đó như thế này:

Application.EnableEvents = False 'disable Events 
workbooks.Open "WORKBOOKPATH"  'open workbook in question 
Application.EnableEvents = True 'enable Events 
+0

Nếu điều này không hoạt động, cách khác để làm việc này là khai báo một boolean toàn cầu trong một mô-đun và đặt nó thành true hoặc false khi bạn muốn hoặc không chạy mã Workbook_Open(). Bạn sẽ phải thêm một câu lệnh If() để kiểm tra giá trị boolean trong phần Workbook_Open() của bạn. – dnLL

+1

Hoặc xem xét sử dụng 'Application.AutomationSecurity' –

+0

Tôi nghĩ rằng các macro vẫn được kích hoạt và có thể được kích hoạt sau khi EnableEvents được kích hoạt lại. – Tuntable

0

Một sự kết hợp của Application.EnableEvents và Application.EnableEvents cụ Workbook hoạt động tuyệt vời. Bất kỳ lúc nào sổ làm việc được tham chiếu lại (chẳng hạn như sao chép ô), nó sẽ thu thập lại các sự kiện kích hoạt. Workbook có để thoát đầu tiên, và không thể được truy cập sau khi đóng vì vậy hãy thử này:

Dim wb as Workbook 
Application.EnableEvents = False 
Set wb = workbooks.Open "YOURWORKBOOKPATH" 
Application.EnableEvents = True 
wb.Application.EnableEvents = False 

**Code** 

wb.Application.EnableEvents = True 
wb.Close 
+2

Không có những điều như "Workbook cụ thể Application.EnableEvents". wb.Application = Ứng dụng – MGM

5

đây một cách khác để mở ra với ra VBA

Start Excel Application > Go to File > Recent >

enter image description here

Giữ phím Shift và nhấp đúp để mở -

Việc làm này sẽ ngăn chặn các sự kiện Workbook_Open từ bắn và Auto_Open vĩ mô từ chạy.

Hoặc giữ phím shift và nhấp đúp để mở Sổ làm việc.

+0

Ông hỏi về việc mở mã VBA. Câu hỏi khó hơn nhiều. – Tuntable

3

Tôi không biết tại sao điều này không được đề cập rõ ràng trong các câu trả lời khác nhưng tôi đã tìm thấy Application.AutomationSecurity để thực hiện chính xác những gì được yêu cầu. Về cơ bản

Application.AutomationSecurity = msoAutomationSecurityByUI 
'This is the default behavior where each time it would ask me whether I want to enable or disable macros 

Application.AutomationSecurity = msoAutomationSecurityForceDisable 
'This would disable all macros in newly opened files 

Application.AutomationSecurity = msoAutomationSecurityLow 
'This would enable all macros in newly opened files 

Ngay cả sau khi mã được chạy, cài đặt sẽ không hoàn nguyên về hành vi mặc định, do đó bạn cần phải thay đổi lại. Do đó cho câu hỏi này

Application.AutomationSecurity = msoAutomationSecurityForceDisable 
' Your code 
Application.AutomationSecurity = msoAutomationSecurityByUI 
Các vấn đề liên quan