none
如何在vba中判断文件是否已经打开? RRS feed

  • 问题

  • 我在一系统中用vbscript脚本(使用 filesystemobject 对象)来打开文件等 ,现在需要在 系统关闭前判断文件是否已经打开,请问有什么办法?有人说使用 filesystemobject的copyfile函数来判断,说是正在打开的文件不允许拷贝,请问这种方法是否能确定可行?我不想判断出错并且每个文件产生多一份拷贝。谢谢!


    dingbc

    如果用copyfile可以,如何捕捉copyfile函数的返回值?

    2011年8月24日 12:54

全部回复

  • 呃,正在打开的文件也是允许拷贝的,除非是以独占方式打开文件。

    如果你的代码有文件句柄泄漏,你应该修复这个缺陷。如果打开文件的是别的程序,那么提示用户操作失败,可能是别的程序在使用文件就可以了。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年8月24日 18:42
    版主
  • 你好,

    这篇kb是关于用VBA来检查文件是否被打开。你看下,希望对你有所帮助。

    http://support.microsoft.com/kb/209189 (WD2000: VBA Function to Check Whether File or Document Is Open)

    Best regards


    Liliane Teng [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月25日 10:55
  • 谢谢各位。

    有两个问题,我的软件系统可以打开office文件,我就是希望在系统关闭前能检查本系统打开的office文件是否已经关闭;第二个问题是,我打开office文件使用的是vba脚本的方法,采用open打开字节流的方法 必须要做成一个dll才行,这样的话 会比较麻烦,可能涉及到在客户端注册dll的问题,这个不是很好。

    不知道还有没有别的办法?能否使用filesystemobject的deletefile方法?毕竟如果文件打开了是不允许删除的吧?


    dingbc
    2011年8月25日 12:32