通过VBA指定Excel文件

时间:2016-06-20 14:23:27

标签: excel-vba vba excel

有没有办法“标记”' vba中的文件?我的代码进入一系列文件夹,并从存在于主数据库中的每个文件(excel)中导入数据。操作中最耗时的部分是打开文件 - 目前,我在导入后为文件名添加了前缀。代码查找此前缀,并在下一个导入周期中跳过该文件。

是否有更优雅且更少前端可见的标记文件的方式,以便VBA可以识别已完成的文件而无需先打开它?

编辑:为了澄清,读取文件名,如果文件具有前缀(I_),则不处理该文件。我正在寻找一种标记文件的方法,而不需要更改它的相应位置或文件名 - 这个属性对数据库的其他用户来说并不是很明显。代码完成后,此标记需要保留,因为稍后会再次检查相同的文件,并且可能来自运行更新代码的多台计算机。

我无法保存已处理文件的数据库 - 有数千种并且还在增长。与该列表相比,打开文件并处理它所需的时间更长,无论之前是否运行过。

处理过的文件数组不会持续存在。我没有在一次执行中多次处理同一文件的问题,而是[每次执行代码而不是一次完成时处理文件]或[重命名文件]。后者不是一个好的解决方案 - 我不想重命名成千上万的文件供其他人和程序参考。

1 个答案:

答案 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

对于大量文件,我会在当前文件夹中为已处理文件创建一个文件夹,将每个文件移到那里并在完成所有操作后再将其移回。

相关问题