如何在 VBA 中设置因月份而异的文件路径?

Posted

技术标签:

【中文标题】如何在 VBA 中设置因月份而异的文件路径?【英文标题】:How to set a filepath in VBA that will vary based on the month? 【发布时间】:2016-06-03 18:43:47 【问题描述】:

我遇到了问题。目前,我有几个 vb 模块相互协作,执行时会增加一个下拉列表,在下拉列表中保存每个选项的版本,并打印出一份副本。

现在我正在使用这个文件路径。

Sub G5()
    'Update 20141112
    Dim Path As String
    Dim filename As String
    Path = "C:\Users\MY.Name\Documents\Testing\" & _
            Range("G5") & "\" 
    filename = Range("G5")
    If ActiveSheet.Range("G5").Value = "" Then End
    If ActiveSheet.Range("G5").Value = "NAMES" Then Exit Sub
    ActiveWorkbook.SaveAs filename:=Path & filename & "-" & Format(Date, "mmddyyyy") & ".xlsm", FileFormat:=52
End Sub

因此,单元格 G5 包含此凭证的人的姓名(姓氏、名字)。每个名称都经过数据验证,并且与其各自文件夹的名称相同。目前脚本将保存到他们的文件夹中,但在这些文件夹中有 12 个子文件夹,每个月一个。有什么方法可以让我将文件保存到正确的月份文件夹中?

单元格 I10 是唯一按名称提及月份的单元格,但格式为“June Transit Reimbursement”

任何帮助将不胜感激。上面的脚本与另外两个脚本一起运行,虽然它完成了我需要它做的 95% 的工作,但如果我能克服这最后一个障碍,这个过程将 100% 自动化。

我正在尝试通读 Like Operators 和 Option Compare Statements,但我很挣扎,在阅读了这么多帖子后希望有人能提供帮助

【问题讨论】:

当然!你怎么不只是在那里添加第三个变量? Path = "C:\Users\MY.Name\Documents\Testing\" & Range("G5") & "\" & theMonth & "\"? (我错过了什么吗?)是什么决定了哪个月份是“正确”的月份?是我们所在的当前月份吗? @BruceWayne 嘿,布鲁斯,不幸的是,我们有一些代金券有点滞后,所以即使本月应该看到 6 月的代金券,我们也会收到过去 90 天内任何时间段的代金券。它需要是动态的(也许?)并且能够识别单元格 i10 中提到的月份,或者至少反映在那里找到的同一月份 【参考方案1】:

假设您的文件夹使用与 I10 中显示的相同名称格式,则通过从 I10 中获取第一个单词然后将其放入文件路径来获取月份。

parts = Split(Range("I10"), " ")
theMonth = parts(0) & " " & parts(1)
Path = "C:\Users\MY.Name\Documents\Testing\" & Range("G5") & "\" & theMonth & "\"

更新为使用 Mat's Mugs cmets 单元格中的前 2 个单词。

【讨论】:

这真的很接近工作了!是否可以从 i10 中获取前两个单词而不仅仅是第一个单词?这就是命名约定需要排列的方式 @creddit 提取一个变量来保存Split 函数为您提供的数组 - 比如parts,然后连接theMonth = parts(0) & " " & parts(1) @Mat'sMug 嘿,Mat's Mug,我对这一切真的很陌生。到目前为止,我认为我的任何项目都比编程技能更多地结合了运气、上下文线索以及复制和粘贴。您能否详细说明如何创建一个变量来保存数组?对不起,如果我听起来像个新手,但我是! Dim parts As Variant 声明一个显式变体,然后parts = Split(Range("I10"), " ") 在每个空格处拆分I10 的内容,为您提供一个分配给parts 的数组。然后parts(0) & " " & parts(1) 将前两个“部分”连接成一个字符串,您可以将其分配给theMonth 变量。

以上是关于如何在 VBA 中设置因月份而异的文件路径?的主要内容,如果未能解决你的问题,请参考以下文章

使用因属性而异的元素反序列化 XML

使用 VBA 保存:不同单元格中的路径和文件名

VBA如何检验文件路径是不是正确?

如何在excel vba中传递包含excel文件路径的字符串以访问vba

如何在excel VBA中获取保存文件的路径和名称?

如何用EXCEL VBA批量提取JPG文件日期时间信息到表格中?