将工作簿保存到当前子文件夹的父文件夹中

时间:2016-12-08 18:37:18

标签: excel vba excel-vba

我正在尝试编写一个将工作簿保存在其当前位置的父文件夹中的宏。该工作簿目前保存在"内部副本中。文件夹,我试图将宏保存为父文件夹。我坚持如何解析文件路径,不包括"内部副本"夹。我试图避免将单元格专用于包含文件路径并将其声明为变量。

3 个答案:

答案 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