【问题标题】:Autoincrement created folder names from Access VBA从 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 是全局变量吗?您要创建多少个文件夹?这将由用户输入决定吗?这将始终是一组新文件夹还是您需要添加到父文件夹?

标签: vba for-loop ms-access auto-increment mkdir


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-06
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多