Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:按模式打开子目录中的文件_Excel_Vba - Fatal编程技术网

Excel VBA:按模式打开子目录中的文件

Excel VBA:按模式打开子目录中的文件,excel,vba,Excel,Vba,我有一个目录,其中的文件夹名如下: "Voy [yyyymmdd]-[no]" 其中,[yyyymmdd]表示日期,[no]以每个文件夹一个为增量 dir\Voy 20140101-100\* dir\Voy 20140105-101\* dir\Voy 20140109-102\* dir\Voy 20140113-103\* dir\Voy 20140117-104\* dir\Voy 20140121-105\* dir\Voy 20140125-106\* [...] 我想访问最新文

我有一个目录,其中的文件夹名如下:

"Voy [yyyymmdd]-[no]"
其中,[yyyymmdd]表示日期,[no]以每个文件夹一个为增量

dir\Voy 20140101-100\*
dir\Voy 20140105-101\*
dir\Voy 20140109-102\*
dir\Voy 20140113-103\*
dir\Voy 20140117-104\*
dir\Voy 20140121-105\*
dir\Voy 20140125-106\*
[...]
我想访问最新文件夹中的一个文件(始终命名为“myfile.xlsx”),即:具有最高[no]

我如何做到这一点?
我应该使用引用的DIR函数吗?

试试这个。您可能需要根据您的目录和文件命名约定调整此设置

Sub GetLatestFiles()
    Dim strDir As String, fs As Object, startFolder As String, subfolder As Object, increment As Integer, latest As Integer, latestFolder As String

    Set fs = CreateObject("Scripting.FileSystemObject")
    startFolder = "C:\YourDirectory"
    Set folder = fs.GetFolder(startFolder)
    latest = 0
    latestFolder = vbNullString        

    For Each subfolder In folder.SubFolders
        increment = CInt(VBA.Right(subfolder.Path, Len(subfolder.Path) - WorksheetFunction.Find("-", subfolder.Path, 1)))

        If increment > latest Then
            latest = increment
            latestFolder = subfolder.Path
        End If
    Next

    Workbooks.Open latestFolder & "\" & "myfile.xlsx"
End Sub
  • 代码在主目录中的所有子文件夹中循环
  • 对于每个版本,它会记录版本号并跟踪最高版本
  • 最后打开最新的工作簿

我在第11行得到一个类型不匹配:increment=CInt(…Off-by-1-error?忽略上一个。需要删除一些其他文件夹。如果instr(…应该这样做。经过几次修改后,我使它工作了,非常感谢!我尝试将latestFolder的最终值打印到工作簿中的一个单元格中,结果是“”。知道为什么吗?我很高兴它起到了作用。不确定什么时候打印
最新文件夹
。。我会看一看……忽略
最新文件夹
问题。我忘了“-”出现在
目录
树的更高位置。修改了
工作表函数。查找()
开始查看索引50并向前。