【问题标题】:subracting specific word from a variable file name从变量文件名中减去特定单词
【发布时间】:2016-04-05 11:52:27
【问题描述】:
这对你们中的许多人来说可能很容易,但我是 VBA 的新手。我有一个变量名为“Dateiname”的 Excel 文件,我想通过添加变量“hops”来更新这个“Dateiname”。我的问题是 Dateiname 里面已经有“.xlsm”,我希望“.xlsm”扩展名在 Dateiname 之后消失,所以我可以将“hops”变量添加到“Dateiname”并以“.xlsm”扩展名结束。
Dim hops as String
Dim Dateiname as String
Dateiname = Dateiname & hops & ".xlsm"
我该怎么做?
【问题讨论】:
标签:
vba
file
excel
filenames
【解决方案1】:
有几种方法可以做到这一点。最简单的就是使用
Dateiname = Replace(Dateiname , ".xlsm", hops & ".xlsm")
以前的解决方案的一个缺点是,如果扩展名不是.xlsm,它将失败。更稳健的方法是
Dim A as variant, i as Long
A = Split(Dateiname,".")
i = UBound(A)-1
A(i) = A(i) & hops
Dateiname = Join(A,".")
最后,File System Object(可以从 VBA 中使用)包含以不同方式拆分和重新组装路径的各种方法。我倾向于使用上述技术较低的方法,但出于某些目的,您可能需要更复杂的工具。
【解决方案2】:
只是玩一下,下面一行语句
Dateiname= Mid(Dateiname, 1, InStrRev(Dateiname, ".") - 1) & hops & Mid(Dateiname, InStrRev(Dateiname, "."))
适用于每个文件扩展名以及包含点的名称而不是扩展名
谁更“会说话”的版本是
Dim iDot as long
iDot = InStrRev(Dateiname, ".")
Dateiname = Mid(Dateiname, 1, iDot - 1) & hops & Mid(Dateiname, iDot)
如果名称中没有任何点,它们都将不起作用...