具体情况是这样:
程序调出word后,隔几分钟就对用户的WORD文档进行自动保存工作,但最近发现,当要程序保存时,如果用户正在调用其它组件而打开一个对话框,或正在设置各种属性而打开另一对话框,这种时候,系统又对文档进行保存工作的话,系统就会提示“系统忙,动作不能完成…………”的提示。
请问如果判断系统能否进行保存工作?
程序调出word后,隔几分钟就对用户的WORD文档进行自动保存工作,但最近发现,当要程序保存时,如果用户正在调用其它组件而打开一个对话框,或正在设置各种属性而打开另一对话框,这种时候,系统又对文档进行保存工作的话,系统就会提示“系统忙,动作不能完成…………”的提示。
请问如果判断系统能否进行保存工作?
那各位高手怎么实现自动保存word文件的?
1) 防止Word显示错误信息:application.DisplayAlerts = wdAlertsNone
1)用 on error 语句来捕捉错误:
sub DoAutoSave()
on error goto failed
'do auto save here
exit sub
failed:
'handle error here
end sub
具体的过程如下:wd是打开的word对象
Private Sub PracticeTimer_Timer()
PTimeInt = PTimeInt + 1
If PTimeInt > AutoSaveTime Then
wd.ActiveDocument.Save '自动保存文件
PTimeInt = 1
End If
End Sub
那应该在哪加上楼上写的语句?
On Error Goto Failed
PTimeInt = PTimeInt + 1
If PTimeInt > AutoSaveTime Then
wd.ActiveDocument.Save '自动保存文件
PTimeInt = 1
End If
Exit Sub
Failed:
Debug.Print "自动保存失败!"
End Sub
我觉得主要是在执行wd.ActiveDocument.Save 时出错的,要先判断是否能保存才进行保存工作,可是不知道哪个属性能判断这个属性?
1)用Application.OnTime来取代你的Timer。这样如果有必要的话,Word就会自动延迟或取消计时器定义的操作。关于Application.OnTime的具体用法请参见Word VBA帮助。
2)捕捉Application.DocumentChange事件,在处理该事件时进行自动保存。
App.OleServerBusyRaiseError = True
就不会出现自动化错误的“切换”对话框,而是直接产生错误。