2016-12-08 6 views
-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を返しました。

0

..(例えばC:\Temp\Temp1\Temp2\..\xxx.xlsxC:\Temp\Temp1\xxx.xlsxと同等です)親ディレクトリを指し、あなたはこのような何か書くことができるので:断然

Sub SaveInParentDirectory() 
    ThisWorkbook.SaveAs ThisWorkbook.Path & "\..\" & ThisWorkbook.Name 
End Sub 
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 

これは、パスとファイル名を構築する文字列関数を使用するよりも非常に小さいエラーが発生しやすくなります。

関連する問題