从variables文件名称中抽取特定单词

这可能很容易对你们很多,但我是新的VBA.I有一个variables名为“Dateiname”的Excel文件,我想通过添加variables“啤酒花”来更新这个“Dateiname”。 我的问题是Dateiname里面已经有了“.xlsm”,我希望“.xlsm”扩展名可以在Dateiname之后去掉,所以我可以把“hops”variables添加到“Dateiname”中,并用“.xlsm”扩展名结束。

Dim hops as String Dim Dateiname as String Dateiname = Dateiname & hops & ".xlsm" 

我怎样才能做到这一点 ?

有几种方法可以做到这一点。 最简单的就是使用

 Dateiname = Replace(Dateiname , ".xlsm", hops & ".xlsm") 

这个以前的解决scheme的缺点是,如果扩展名不是.xlsm那么它将会失败。 更健壮的方法是

 Dim A as variant, i as Long A = Split(Dateiname,".") i = UBound(A)-1 A(i) = A(i) & hops Dateiname = Join(A,".") 

最后, 文件系统对象 (可以从VBA中使用)包含以不同的方式拆分和重组path的各种方法。 我倾向于使用像上面这样的较低技术的方法,但出于某些目的,您可能需要更复杂的工具。

只是玩一点点,下面一行陈述

 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) 

他们都不会工作,如果名称没有任何点… …