2016-02-09 65 views
1

我有一個帶有許多選項卡的excel文件。所有標籤名稱如:「pboro bz.csv」,「pboro fd.csv」,「pboro ha.csv」等。VBA刪除excel標籤名稱的前綴

我正在尋找重命名所有這些「bz.csv」,「fd .csv「,」ha.csv「代替。

此外,根據另一個VBA導入的數據,選項卡名稱可能具有不同的前綴。因此,我在標題爲「設置」與我想刪除,在這種情況下,前綴「pboro」

我試圖用這個代碼片單元(B8):

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 

與錯誤崩潰「常量表達式要求」

我懷疑這是因爲我使用的昏暗與瓦爾,然後用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 

我收到錯誤「所需的對象」關於我行代碼

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

我不確定我要去的地方錯了(並且是一個相對的VBA noob可能沒有幫助)。

+3

問題1:「const」只能設置爲const,而Val不是。所以,代碼將永遠不會工作。你的第二次嘗試是更好的,但在這裏我懷疑問題2「安裝程序」不是你的工作表之一的代碼名稱? –

回答

3

現在它崩潰了,因爲您從未將Setup設置爲工作表。

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

應該做的伎倆。此外,它看起來像Val將會更改,因此您不希望將其設置爲Constant

+0

啊,以爲我之前已經把它設置爲工作表了,因爲我看到我沒有把它設置爲「公共」工作表。 非常感謝您的快速響應! –

+1

只是一個注意:如果你將工作表對象(在VBE內)命名爲'Setup',Setup.Range(「B8」)。Value將會起作用。 –

+1

@ScottHoltzman - 你的意思是如果我改變工作表的名字項目視圖(它是表單圖標,然後是「ThisWorkbook」圖標,以及它下面的模塊),你可以在不聲明它的情況下執行'Setup'?整齊!我不知道。 – BruceWayne

相關問題