Có các sự kiện được định nghĩa trong mô hình đối tượng từ vba cho các sự kiện này không?


0

Trước hết, tôi đã nhìn và không tìm thấy bất kỳ.

Tôi muốn một macro chạy bất cứ khi nào một trong những điều sau đây xảy ra:

  1. Tài liệu được mở
  2. Tài liệu được lưu
  3. Văn bản được dán vào tài liệu
  4. Tài liệu phát triển thêm một trang.
  5. Tài liệu thu nhỏ lại còn một trang.

Đối với 2 cái đầu tiên có các sự kiện, ngay cả khi về mặt kỹ thuật thì cái thứ hai là trước khi lưu, nhưng liệu có cho ba cái kia không? Nếu không, tôi bằng cách nào đó có thể thêm chúng?

Liên quan đến sự kiện số hai, có sự kiện DocumentB BeforeSave nào khi tự động lưu không?


Không chính xác, tổng số trang của toàn bộ tài liệu. Đôi khi mọi người sẽ chỉ muốn in một phần của nó để xem xét. Điều đó sẽ thay đổi khu vực in nhưng không phải là tổng số trang.
Ernst

Câu trả lời:


1

Bạn đang nói về việc bắt / chặn các lệnh. Bạn nói đúng, có những sự kiện cho opensave, nhưng những người khác là ít phổ biến hơn. Đây là một liên kết đến một số mã để Bắt Paste . Tôi biết nếu tập trung vào Excel, nhưng nó có thể giúp bạn đi đúng hướng cho những gì bạn đang cố gắng làm.

Ngoài ra, hãy kiểm tra Sử dụng VBA để kiểm soát các lệnh tích hợp trong hệ thống văn phòng 2007 . Có một liên kết trong bài viết này để Tài liệu và tài liệu tham khảo SDK cho nhà phát triển văn phòng Điều này cũng có thể hữu ích.

Ghi nhớ; chạy macro trên một tài liệu đã lưu có thể không hoạt động giống nhau cho mỗi người trừ khi Macro Security được đặt giống nhau. Một số máy tính có thể bị chặn, điều đó có nghĩa là tài liệu của bạn sẽ không hoạt động như bạn mong muốn.


Tôi không nghĩ đề xuất bắt sự kiện dán sẽ hoạt động như từ Bộ nhớ Ứng dụng. OnKey không hoạt động trong MS Word.
Adam

1

Tôi tin rằng bạn có thể ghi đè các hàm VBA nhất định bằng cách đặt tên phụ giống như tên phương thức được xây dựng. Trong trường hợp này, điều này sẽ giúp phục vụ như là nắm bắt sự kiện.

Sub EditPaste()

Selection.Paste
'Other code

End Sub

Về việc nắm bắt số lượng trang trong tài liệu, bạn có thể sử dụng bộ hẹn giờ để thăm dò số lượng trang và hành động nếu số lượng đã thay đổi:

Private Sub Document_Open()

Application.OnTime When:=Now + TimeValue("00:00:01"), _
Name:="CheckPages"

End Sub

Sub CheckPages()

'
' Get pages using ActiveDocument.ActiveWindow.ActivePane.Pages.Count 
' Compare with page count stored via global variable
' If they don't match run code for your event.

'Rerun the macro in 1 second
Application.OnTime When:=Now + TimeValue("00:00:01"), _
Name:="CheckPages"

End Sub
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.