【问题标题】:Is there a way to Get Last Directory so I can Save As into?有没有办法获取最后一个目录,以便我可以另存为?
【发布时间】:2020-01-04 01:49:25
【问题描述】:

我能够在我的桌面上创建一个新目录,我的问题是我不知道如何将多个文件保存到同一个 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”,但不知道如何将它放入我刚刚创建的新文件夹中。

【问题讨论】:

    标签: vba directory save-as


    【解决方案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") 检索当前用户配置文件目录的基本路径。

    【讨论】:

    • 请注意Environ$
    • 太棒了!感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2019-06-05
    • 2011-08-11
    • 2012-10-20
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多