我尝试使用下面的代码循环遍历strDir变量,在4个不同的位置创建4个不同的文件夹。
它不会创建文件夹。没有错误出现。
Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7a5f8
Faulting module name: clr.dll, version: 4.0.30319.34209,
time stamp: 0x5348961e
Exception code: 0xc00000fd
Fault offset: 0x0000dfa7
Faulting process id: 0x10e8
Faulting application start time: 0x01d13c4f187f996e
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: 7c01148e-a842-11e5-a7b4-005056880172
答案 0 :(得分:2)
我同意数组方法,但避免在数组中创建空白条目。它有一个从零开始的索引(默认情况下),strDir(4)
实际上创建了5个条目;例如 0,1,2,3,4 。
首先,将
Option Explicit
放在代码表的顶部,或者进入VBE的工具►选项►编辑器,然后选中需要变量声明。这将很快识别代码中strDir
之类的未声明变量的使用。
Dim d As Long, strDir As Variant, JobName As String
strDir = Array("C:\QTR\" & JobName & " QTR", _
"C:\QT\" & JobName & " QT", _
"C:\EMAILS\" & JobName & " EMAILS", _
"C:\DOCUMENTS\" & JobName & " DOCS")
For d = LBound(strDir) To UBound(strDir)
If Dir(strDir(d), vbDirectory) = "" Then
MkDir strDir(d)
Else
Debug.Print strDir(d) & " exists."
End If
Next d
答案 1 :(得分:1)
试试这段代码:
Dim i as Integer
Dim strDir(4) as String
JobName = NewJob.Value
If New_Job.JobYes.Value Then
strDir(1) = "C:\QTR\" & JobName & " QTR"
strDir(2) = "C:\QT\" & JobName & " QT"
strDir(3) = "C:\EMAILS\" & JobName & " EMAILS"
strDir(4) = "C:\DOCUMENTS\" & JobName & " DOCS"
For i = 1 To 4
If Dir(strDir(i), vbDirectory) = "" Then
MkDir strDir(i)
Else
MsgBox "Directory exists."
End If
Next i
Else
End If
答案 2 :(得分:0)
这确实会产生错误,因为它无法连接“strDir”和&我在一起,使用该特定参数。最简单的解决方法是跳过循环并使用:
If Dir(strDir, vbDirectory) = "" Then
MkDir strDir1
MkDir strDir2
MkDir strDir3
MkDir strDir4
Else
MsgBox "Directory exists."
End If
如果您确实需要创建大量目录,请说> 10,那么您可能希望按名称使用动态请求参数,但如果您不需要它,我不会推荐它。