【发布时间】:2020-04-16 09:59:21
【问题描述】:
我正在尝试检查路径中的文件夹 1、2 和 3 是否存在。
例如:C:\Users\%USERNAME%\Documents\Folder 1\Folder 2\Folder 3\
如果它们不存在,它应该创建每个文件夹,然后将工作簿保存在文件夹 3 中。 所有文件夹名称和文件名都取决于单元格值。
不知道我做错了什么。
Sub Macro1()
Dim folderPath As String
Dim individualFolders() As String
Dim tempFolderPath As String
Dim arrayElement As Variant
folderPath = "C:\Users\%USERNAME%\Documents" & "\" & Worksheets("Sheet1").Range("A10").Value & "\" & Worksheets("Sheet1").Range("B10").Value & "\" & Worksheets("Sheet1").Range("C10").Value
individualFolders = Split(folderPath, "\")
For Each arrayElement In individualFolders
tempFolderPath = tempFolderPath & arrayElement & "\"
If Dir(tempFolderPath, vbDirectory) = "" Then
MkDir tempFolderPath
End If
Next arrayElement
strFilename = Worksheets("Sheet1").Range("C1").Value 'New file name
strDefpath = Environ("USERPROFILE") & "\Documents\" & Worksheets("Sheet1").Range("A10").Value & "\" & Worksheets("Sheet1").Range("B10").Value & "\" & Worksheets("Sheet1").Range("C10").Value
If IsEmpty(strDirname) Then Exit Sub
If IsEmpty(strFilename) Then Exit Sub
MkDir strDefpath & "\" & strDirname
strPathname = strDefpath & "\" & strDirname & "\" & strFilename 'create total string
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=strPathname & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
【问题讨论】:
-
请检查所有变量是否定义正确。例如
strFilename似乎没有被定义。只是粗略的看一下。 -
我看到的第一个明显错误是:
"C:\Users\%USERNAME%\Documents"- 应该是"C:\Users\" & Environ$("Username") & "\Documents"- 但如果你犯了这个错误,你的代码中可能会有更多错误。 -
使用MakeSureDirectoryPathExists!这也可以让您控制是否已创建路径,因为您没有检查有效的目录名称-。