用VBA无法截获用户对Excel文件的打印、保存、和关闭事件,在线等立刻给分

zych72 2003-01-17 02:36:41
兄弟用VBA写了一段代码,打开一个指定的excel文件 ,并且在用户打印、保存、何关闭这个文件之前显示操作的动作,结果在程序中调用
Application.ActiveWorkbook.PrintOut()
Application.ActiveWorkbook.Save()
Application.ActiveWorkbook.Close()
能够触发这些事件
Application.WorkbookBeforePrint()
Application.WorkbookBeforeSave()
Application.WorkbookBeforeClose()
但是用户操作打印,保存,和关闭时并不能触发
请大虾指点,在线等立刻给分
下面是兄弟的代码
...全文
367 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zych72 2003-02-13
  • 打赏
  • 举报
回复
解决,是在完成以上设置后运行
while(not finish)
DoEvents
endW
或者在form_load中设置只要不关闭form就可以触发事件
zych72 2003-01-21
  • 打赏
  • 举报
回复
算了,没有人会,结账
zych72 2003-01-18
  • 打赏
  • 举报
回复
怎么没有人给点提示
zych721 2003-01-17
  • 打赏
  • 举报
回复
没办法,自己另外注册了个账户
up 以下 :)
zych72 2003-01-17
  • 打赏
  • 举报
回复
调用testEvent可以出发这些事件处理过程
可以对窗口中的Excel文件进行print,save,close操作时却没有丝毫反应
嘿嘿,真怪
zych72 2003-01-17
  • 打赏
  • 举报
回复
'ExcelFileHandler

Option Explicit


Private WithEvents objApp As Excel.Application


Private Sub Class_Initialize()
Set objApp = New Excel.Application
End Sub

Private Sub Class_Terminate()
Set objApp = Nothing
End Sub


Public Function openFile(fileName As String) As Boolean

objApp.Workbooks.Open fileName, , False
objApp.Visible = True
End Function

Public Sub testEvent()
objApp.ActiveWorkbook.PrintOut
objApp.ActiveWorkbook.Save
objApp.ActiveWorkbook.Close
End Sub


Private Sub objApp_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
MsgBox "objApp_WorkbookBeforeClose"
Wb.Saved = True

End Sub

Private Sub objApp_WorkbookBeforePrint(ByVal Wb As Workbook, Cancel As Boolean)
MsgBox "objApp_WorkbookBeforePrint"

End Sub

Private Sub objApp_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUi As Boolean, Cancel As Boolean)

MsgBox "objApp_WorkbookBeforeSave"

End Sub

Private Sub objApp_WorkbookNewSheet(ByVal Wb As Workbook, ByVal Sh As Object)

MsgBox "objApp_WorkbookNewSheet"

End Sub
Private Sub objApp_NewWorkbook(ByVal Wb As Workbook)

MsgBox "objApp_NewWorkbook"

End Sub

Private Sub objApp_SheetActivate(ByVal Sh As Object)
MsgBox "objApp_SheetActivate"

End Sub

Private Sub objApp_WorkbookOpen(ByVal Wb As Workbook)
MsgBox "objApp_WorkbookOpen"

End Sub
Private Sub objApp_AutoOpen(ByVal Wb As Workbook)
MsgBox "objApp_WorkbookOpen"

End Sub

zych72 2003-01-17
  • 打赏
  • 举报
回复
'MainModule

Option Explicit
Sub Main()

Dim fh As New ExcelFileHandler
Call fh.openFile("D:\temp\book1.xls")
Call fh.testEvent
MsgBox "Click to Exit"
Set fh = Nothing
End Sub

jackystar 2003-01-17
  • 打赏
  • 举报
回复
up

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧