有没有办法“标记”' vba中的文件?我的代码进入一系列文件夹,并从存在于主数据库中的每个文件(excel)中导入数据。操作中最耗时的部分是打开文件 - 目前,我在导入后为文件名添加了前缀。代码查找此前缀,并在下一个导入周期中跳过该文件。
是否有更优雅且更少前端可见的标记文件的方式,以便VBA可以识别已完成的文件而无需先打开它?
编辑:为了澄清,读取文件名,如果文件具有前缀(I_),则不处理该文件。我正在寻找一种标记文件的方法,而不需要更改它的相应位置或文件名 - 这个属性对数据库的其他用户来说并不是很明显。代码完成后,此标记需要保留,因为稍后会再次检查相同的文件,并且可能来自运行更新代码的多台计算机。
我无法保存已处理文件的数据库 - 有数千种并且还在增长。与该列表相比,打开文件并处理它所需的时间更长,无论之前是否运行过。
处理过的文件数组不会持续存在。我没有在一次执行中多次处理同一文件的问题,而是[每次执行代码而不是一次完成时处理文件]或[重命名文件]。后者不是一个好的解决方案 - 我不想重命名成千上万的文件供其他人和程序参考。
答案 0 :(得分:0)
对于少量文件,我会在处理完每个文件名后,将每个文件名添加到数组中,之后已经检查了数组中是否存在该文件名。
If IsInArray(FileName, ProcessedFilesArray) Then
'You processing code here
'Add item to array when processed
ReDim Preserve ProcessedFilesArray(1 To UBound(ProcessedFilesArray) + 1) As Variant
ProcessedFilesArray (UBound(ProcessedFilesArray)) = FileName
End If
Function IsInArray(FileToBeFound As String, arr As Variant) As Boolean
IsInArray = (UBound(Filter(arr, FileToBeFound)) > -1)
End Function
对于大量文件,我会在当前文件夹中为已处理文件创建一个文件夹,将每个文件移到那里并在完成所有操作后再将其移回。