FSO 读取文件夹中文件的问题

X615769472 2019-01-18 11:23:18
一个系统有文件导出功能,点击导出按钮后,可以在指定文件夹中导出PDF和Excel文件,
导出的时候有个过程,先在文件夹中出现一个大小为0的文件,然后那个文件的体积会慢慢变大,
我想等文件完全导出完毕之后,放入outlook作为附件发出去,在实际操作中,出现了一些问题。
请老师帮我看看这俩问题如何解决,谢谢

1. 过程 ListFiles
刚刚点击完导出按钮后,运行 ListFiles,有的时候 Str$ = Obj.Path 这一句会报错,错误是 "File Not Found",
打开本地窗口发现,Obj 的所有属性全都显示为 "application-defined or object-defined error",
如果在点击到处按钮之后,等一段时间再去运行 ListFiles,就不会出现这个问题。

2. 过程 ReadFiles 和 AccessRight
利用这俩过程,来逐一判断文件夹中文件是否处于被其他程序占用的状态,如果文件全都不被占用的话,就说明所有文件全都导出完成,
但在实际运行这俩过程的时候,会遇到一个问题,有的时候,那个系统本身就报错了,错误是"文件已经被其他应用程序打开",
估计是文件刚刚生成的时候,就被这一句占用了 Open FilePath For Binary Lock Read Write As #1



Sub ListFiles()
Dim FSO As Object
Dim FSO_Folder As Object
Dim myPath$
Dim Obj
Dim Str$
Dim k1 As Long

myPath$ = "C:\Users\jim\Desktop\UIAutomation_VBA-master"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FSO_Folder = FSO.GetFolder(myPath)
For Each Obj In FSO_Folder.Files
Str$ = Obj.Path
Next Obj
End Sub

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub ReadFiles()
Dim FSO As Object
Dim FSO_Folder As Object
Dim myPath$
Dim Obj
Dim Str$
Dim k1 As Long

myPath$ = "C:\Users\jim\Desktop\UIAutomation_VBA-master"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FSO_Folder = FSO.GetFolder(myPath)

Do
k1 = 0
For Each Obj In FSO_Folder.Files
k1 = k1 + AccessRight(Obj.Path)
Next Obj
DoEvents
Loop Until k1 = FSO_Folder.Files.Count
End Sub


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Function AccessRight(ByVal FilePath As String) As Long
On Error GoTo The_end

AccessRight = 0
Open FilePath For Binary Lock Read Write As #1
Close #1
AccessRight = 1

The_end:
End Function
...全文
44 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧