有没有一种方法可以获取“上一个目录”,以便我可以另存为?

时间:2019-08-30 20:38:04

标签: vba directory save-as

我能够在桌面上创建一个新目录,我的问题是我不知道如何将多个文件保存到同一Sub中的该文件夹中,因为它具有动态名称。

Option Explicit

Sub Make_Folder_On_Desktop()

Dim selectionsheet As Worksheet
Dim Group As Variant
Dim amount As Long
Dim BU As Long
Dim BUname As Variant
Dim sFilename As Variant

Set selectionsheet = Sheets("Project Selection")
Group = selectionsheet.Range("A19").Value
amount = selectionsheet.Range("B19").Value
BU = selectionsheet.Range("B6").Value
BUname = selectionsheet.Range("C6").Value
sFilename = BU & " - " & BUname

MkDir Group & " - " & amount & " - " & Format(Date, "mm-dd-yyyy") & " - " 
& Format(Time, "hhmmss")
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & sFilename

End Sub

最后一行是我遇到的问题。我有“ ThisWorkbook.Path”,但无法弄清楚如何将其放入我刚刚创建的新文件夹中。

1 个答案:

答案 0 :(得分:1)

MkDir Group & " - " & amount & " - " & Format(Date, "mm-dd-yyyy") & " - " & Format(Time, "hhmmss")

很难知道您刚刚创建的文件夹名称是什么,因为该指令负责太多事情。拆分。

  • 建立/连接文件夹名称
  • 使用该名称创建目录

如果我们分开工作,事情会变得简单得多:

Dim path As String
path = Group & " - " & amount & " - " & Format(Date, "mm-dd-yyyy") & " - " & Format(Time, "hhmmss")

MkDir path

现在,我们在... path变量中有了路径,该路径可轻松用于您可能要使用的任何操作:

ActiveWorkbook.SaveAs path & "\" & sFilename

请注意,如果您改用日期格式yyyy-mm-dd,则表示您符合ISO标准(即,世界各地的日期都是明确的),并且文件夹可以按名称进行排序。

请注意,该过程的名称具有误导性:它不在乎文件夹的位置,并且没有任何内容表明该文件夹位于%USERPROFILE%\Desktop下。使用Environ$("USERPROFILE")检索当前用户的个人资料目录的基本路径。