从 Access VBA 自动增量创建的文件夹名称

Posted

技术标签:

【中文标题】从 Access VBA 自动增量创建的文件夹名称【英文标题】:Autoincrement created folder names from Access VBA 【发布时间】:2021-10-25 16:56:09 【问题描述】:

我想知道是否有一种方法可以根据表单中的值自动增加文件夹名称。基本上,我需要在前一个文件夹中创建一个空文件夹,并为以后的条目创建一个自动递增的编号。我的脚本可以在正确的位置创建文件夹,但我不确定如何使文件夹的标题以“1”开头,然后为以后的每个条目自动递增。

这就是我现在所拥有的。它不起作用,但我想我可能会做点什么?我知道我必须将 TimeDateTeam.value 设置为静态的,否则每个文件夹都会不同,并且无法增加数量。我可以完全省略它,并将文件夹命名为“Test n”,其中 n 是自动递增的数字。

 Dim filepath1 As String
    Dim filepath2 As String
    Dim i As Integer
    
    
    filepath1 = Path2 & "\" & Me!TimeDateTeam.Value & "Test " & i
    filepath2 = Path2 & "\" & Me!TimeDateTeam.Value & "Test " & i + 1
    
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    
    If fso.FileExists(filepath1) = True Then
    MkDir filepath1
    
    Else: MkDir filepath2
    End If

我是 VBA 和一般编程的新手,并且考虑使用 for 循环并在 i > 1 时将“i”添加到末尾,但我不确定完成此操作的语法。任何帮助或建议将不胜感激。我不打算使用 for 循环,所以如果您有其他方法,请提供帮助!

【问题讨论】:

“不起作用”是什么意思 - 错误消息,错误结果,没有任何反应?日期通常用/ 字符构成,不能在文件夹或文件名中。格式化要删除的日期值。 如果文件存在,为什么还要尝试创建它?似乎需要交换 MkDir 变量。 Path2 是全局变量吗?您要创建多少个文件夹?这将由用户输入决定吗?这将始终是一组新文件夹还是您需要添加到父文件夹? 【参考方案1】:

试试这个:

Sub Tester()

    Const root As String = "C:\Tester\Test\"
    Dim i As Integer
    
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    
    i = 1
    Do While fso.FolderExists(root & "Subfolder" & i)
        i = i + 1
    Loop
    fso.CreateFolder (root & "Subfolder" & i)
    
End Sub

【讨论】:

【参考方案2】:

这不需要对 FileSystemObject 的引用。

Option Compare Database
Option Explicit

Sub sbMkDir()
    Dim i As Integer
    Dim s As String
    s = CurrentProject.Path & "\folder"
    For i = 1 To 3
        MkDir s & i
    Next i
End Sub

适用于 Windows 10 和 Microsoft 365

【讨论】:

以上是关于从 Access VBA 自动增量创建的文件夹名称的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 从 MS Access 表创建格式化文本文件

access 2010找不到我的VBA函数?

从 Access 2007 VBA 代码创建 .xlsx 文件时强制用户使用 Excel 版本

MS Access VBA 文件对话框崩溃

从 VBA (MS-Access) 填写 PDF 表单

带有空格和范围的 MS Access VBA acImport 工作表名称