如何在 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 中设置因月份而异的文件路径?的主要内容,如果未能解决你的问题,请参考以下文章