我正在尝试编写一个将工作簿保存在其当前位置的父文件夹中的宏。该工作簿目前保存在"内部副本中。文件夹,我试图将宏保存为父文件夹。我坚持如何解析文件路径,不包括"内部副本"夹。我试图避免将单元格专用于包含文件路径并将其声明为变量。
答案 0 :(得分:1)
到目前为止,处理文件和路径名的最简单方法是使用Scripting.FileSystemObject
:
'Add a reference to Microsoft Scripting Runtime.
Sub Example()
With New Scripting.FileSystemObject
Dim parent As String
'Get the parent directory:
parent = .GetParentFolderName(ThisWorkbook.Path)
Debug.Print parent
Dim target As String
'Combine path parts:
target = .BuildPath(parent, ThisWorkbook.Name)
Debug.Print target
End With
End Sub
与使用字符串函数构建路径和文件名相比,这非常容易出错。
答案 1 :(得分:0)
您可以使用此函数获取工作簿保存位置的父目录:
Function getParentFolder(ByVal strFolder)
getParentFolder = Left(strFolder, InStrRev(strFolder, "\") - 1)
End Function
这是一个测试:
Public Sub Test()
Dim pth As String, savePth as String
pth = ThisWorkbook.Path
savePth = getParentFolder(pth)
ThisWorkbook.SaveAs savePth
End Sub
我使用C:\Test\Internal Copies
中保存的工作簿进行了检查,函数返回C:\Test
。
答案 2 :(得分:0)
因为..
引用了父目录(例如C:\Temp\Temp1\Temp2\..\xxx.xlsx
等同于C:\Temp\Temp1\xxx.xlsx
),所以您可以这样写:
Sub SaveInParentDirectory()
ThisWorkbook.SaveAs ThisWorkbook.Path & "\..\" & ThisWorkbook.Name
End Sub