2016-12-08 3 views
-1

Ich versuche, ein Makro zu schreiben, das eine Arbeitsmappe im übergeordneten Ordner des aktuellen Verzeichnisses speichert. Die Arbeitsmappe wird derzeit in einem Ordner "interne Kopien" gespeichert und ich versuche, das Makro zum Speichern als in den übergeordneten Ordner zu erhalten. Ich bin fest, wie man den Dateipfad analysiert, um den Ordner "interne Kopien" nicht zu enthalten. Ich versuche zu vermeiden, eine Zelle zu dedizieren, um den Dateipfad zu enthalten und das als eine Variable zu deklarieren.Speichern einer Arbeitsmappe in den übergeordneten Ordner des aktuellen Unterordners

Antwort

0

Mit dieser Funktion kann das übergeordnete Verzeichnis, wo die Arbeitsmappe erhalten, ist gespeichert in:

Function getParentFolder(ByVal strFolder) 
     getParentFolder = Left(strFolder, InStrRev(strFolder, "\") - 1) 
End Function 

Und hier ist ein Test:

Public Sub Test() 

     Dim pth As String, savePth as String 

     pth = ThisWorkbook.Path 

     savePth = getParentFolder(pth) 

     ThisWorkbook.SaveAs savePth 
End Sub 

ich mit einer Arbeitsmappe in C:\Test\Internal Copies gespeichert geprüft und die Funktion gab C:\Test zurück.

0

Da .. auf das übergeordnete Verzeichnis verweist (zB C:\Temp\Temp1\Temp2\..\xxx.xlsx entspricht C:\Temp\Temp1\xxx.xlsx), könnte man so etwas schreiben:

Sub SaveInParentDirectory() 
    ThisWorkbook.SaveAs ThisWorkbook.Path & "\..\" & ThisWorkbook.Name 
End Sub 
1

Bei weitem der einfachste Weg, mit Datei- und Pfadnamen zu arbeiten ist das zu verwenden, 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 

Dies ist immens weniger fehleranfällig als String-Funktionen mit Pfaden und Dateinamen zu bauen.

Verwandte Themen