具体情况是这样:
   程序调出word后,隔几分钟就对用户的WORD文档进行自动保存工作,但最近发现,当要程序保存时,如果用户正在调用其它组件而打开一个对话框,或正在设置各种属性而打开另一对话框,这种时候,系统又对文档进行保存工作的话,系统就会提示“系统忙,动作不能完成…………”的提示。
   请问如果判断系统能否进行保存工作?

解决方案 »

  1.   

    没有人知道怎么回事吗?
    那各位高手怎么实现自动保存word文件的?
      

  2.   

    你为什么不用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
      

  3.   

    Word自带的自动保存功能保存的路径不好找,且要每台客户机都要设置,太麻烦了,所以想在软件中实现。
    具体的过程如下:wd是打开的word对象
    Private Sub PracticeTimer_Timer()
        PTimeInt = PTimeInt + 1    
        If PTimeInt > AutoSaveTime Then
                wd.ActiveDocument.Save '自动保存文件
            PTimeInt = 1
        End If
    End Sub
    那应该在哪加上楼上写的语句?
      

  4.   

    application.DisplayAlerts = wdAlertsNone 应加在Timer激活之前。on error 语句可以这样用:Private Sub PracticeTimer_Timer()
        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
      

  5.   

    不行,还是出错,
    我觉得主要是在执行wd.ActiveDocument.Save 时出错的,要先判断是否能保存才进行保存工作,可是不知道哪个属性能判断这个属性?
      

  6.   

    那我是想不出有什么简单办法可以判断这个:当用户打开一个Modal对话框时(Word里绝大多数对话框是Modal的,只有少数如Find/Replace不是),Word就停止VBA代码的执行。我建议你还是想法换个角度解决问题。比如
    1)用Application.OnTime来取代你的Timer。这样如果有必要的话,Word就会自动延迟或取消计时器定义的操作。关于Application.OnTime的具体用法请参见Word VBA帮助。
    2)捕捉Application.DocumentChange事件,在处理该事件时进行自动保存。
      

  7.   

    适当地方加这一句
    App.OleServerBusyRaiseError = True
    就不会出现自动化错误的“切换”对话框,而是直接产生错误。
      

  8.   

    你要把大头的办法和on error结合起来用。