VBA从Excel标签名称中删除前缀

我有一个很多标签的Excel文件。 所有标签都被命名为:“pboro bz.csv”,“pboro fd.csv”,“pboro ha.csv”等。

我正在寻找重新命名所有这些“bz.csv”,“fd.csv”,“ha.csv”。

此外,根据另一个VBA导入的数据,选项卡名称可能具有不同的前缀。 因此,我在标题为“设置”的表格中有一个单元格(B8),其中带有我希望删除的前缀,在这种情况下,“pboro”

我正在尝试使用此代码:

Sub RemovePrefix() Dim WS As Worksheet Dim Val As String Val = Setup.Range("B8").Value Const Prefix As String = Val For Each WS In Worksheets If WS.Name Like Prefix & "*" Then WS.Name = Mid(WS.Name, Len(Prefix) + 1) Next End Sub 

代码崩溃了

  Const Prefix As String = Val 

错误“需要常量expression式”

我怀疑这是因为我使用Dim与Val,然后Const与Prexif。 但是,当我将代码调整为以下内容时:

 Sub RemovePrefix() Dim WS As Worksheet Dim Val As String Val = Setup.Range("B8").Value For Each WS In Worksheets If WS.Name Like Val & "*" Then WS.Name = Mid(WS.Name, Len(Val) + 1) Next End Sub 

我收到与我的代码行有关的错误“Object required”

  Val = Setup.Range("B8").Value 

我不确定我哪里错了(而且是一个相对的VBA noob可能不帮助)。

现在它崩溃了,因为你从来没有将Setup为工作表。

 Dim setup as Worksheet Set setup = Sheets("Setup") 

应该做的伎俩。 此外,它看起来像Val将改变,所以你不希望将其设置为Constant