Dim fs, f, f1, fc, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder("路径")
    Set fc = f.Files
    For Each f1 In fc
        FileCopy 路径& "\" & f1.Name & "", "d:\mycode\抄表\dll0\dll\data\" & f1.Name & ""
    Next
    '调用IDBConvert.dll处理拷贝进来的文件
    Dim b As Boolean
    b = IDBConvert()
    If b = True Then
        MsgBox "转换成功!"
    Else
        MsgBox "转换失败!"
    End If
    每次都失败!我要是先把文件手动拷贝进去,再运行IDBConvert.dll是可以的!

解决方案 »

  1.   

    不要用FSO来做,建议用ShFileCopy函数作,你上面的COPY only start a shell, 你必须自己确认shell是否完成了copy 任务才能对文件操作
      

  2.   


    如果路径是跟目录,你的代码就有问题。你仔细看看  “路径& "\" & f1.Name & ""”的值到底是多少。
      

  3.   

    我上面的路径是不小心写错了,代码肯定是对的,我都可以拷贝好文件的!
    用ShFileCopy到底怎么用?能告诉我吗?给个例子,好不好?
      

  4.   

    你在MSDN中查一下ShFileOperation(凭记忆),关键是一定要确认Copy任务是否完成,通过返回标志查,这个标志可以异步返回,不用等待,如果你同步等待的话,你的程序会被挂起一直到任务完成后才继续。
      

  5.   

    如果文件比较大是需要等待一段时间再进行下一步处理的,我以前也遇到过这种事情,根据文件的大小加上一个sleep试一试
      

  6.   

    文件很小的,我还试了用goto pose语句一直循环等待,可是等了几分钟都不行,我看了文件早就拷贝好了,我想文件肯定是在什么地方被占用了。我还这样试过:(在vb环境下,对代码进行调试)手工把文件a拷贝好,把程序改为“先调用convert.dll(c++编译的函数)对文件a进行操作,然后再从其他地方拷贝文件a
    把a文件覆盖掉”,这样第一次调试运行covert.dll函数是可以的,但是停止此次调试再进行调试就不行了,就是因为上次调试的时候已经对a进行了拷贝,a似乎还在什么地方被占用了,不管等待时间有多长都不行!我要是把程序关闭,重新打开程序进行调试的话,第一次又可以的。这肯定不是说拷贝没完成的问题,而是a被什么所占用。不知道我想的有没有道理,请各位指教!谢谢