用vb编辑一个excel文件,如果程序运行过程中将excel文件打开,程序会出错
怎样写代码才能锁住文件,即在程序运行开始将文件锁住,用户在此期间不能打开此excel文件,待程序执行完毕再将文件锁取消

解决方案 »

  1.   

    Open "d:\1.xls" For Input As #1
    Lock #1
    MsgBox "locked"
    Unlock #1
    MsgBox "unlocked"
    Close #1
      

  2.   


    你把EXCEL文件的扩展名改为其他,这样用户就不能直接打开了。你是想把数据导出到EXCEL中吗?
    你导出后再保存文件,内容这样一直在内存中,用户无法打开直到你保存成文件。
      

  3.   

    不止是导数据那么简单,要对单元格内数据进行校验,有不合格数据要信息提示,并重新输入数据,还要对数据排序,并生成新的excel文件
      

  4.   

    只要你的程序引用EXCEL对象来打开EXCEL文件,这个文件就已经被锁定了,其他人只能以只读方式打开而不能编辑了
      

  5.   

    oExcel.Workbooks.Open (App.Path & "\Template\ship.xls")
    oExcel.ActiveWorkbook.SaveAs (FileName)
    oExcel.WindowState = xlMaximized
    oExcel.Visible = False.....
    oExcel.Visible =True
      

  6.   

    EXCEL做为数据源打开之后,其他人是“只能看不能摸”的!
      

  7.   

    10楼的,我用的就是这种方式,另外9楼11楼说的也是对的,excel文件在vb程序运行时是只读的了,不过还可以点击文件将其打开,虽然不能编辑,但可以不保存关闭,当把它不保存方式关掉后,如果程序还没有运行完,就会出现错误,
    错误号:424
    错误描述:要求对象
    改名的还没有试过
      

  8.   

    想不考虑楼上各位的方案而还是要坚持你要的效果的话,给你指条路:HOOK CreateFileA这个API,一切就解决了...HOHO:)
      

  9.   

    "用户双击",从原理上来说是Explorer.exe先调用CreateProcessA建立一个EXCEL进程,然后EXCEL进程再使用CreateFileA这个API来打开目标文件,然后再使用ReadFile与WriteFile来读写文件.因此只需要把当前EXCEL进程里的CreateFileA函数的调用拦截了,并判断其文件名是否是你不允许读取的文件,就可以让用户无法以EXCEL打开你正在使用的文档了.不过貌似有点小题大作:)