重命名Excel工作表VBA函数
以下是一个VBA函数,用于重命名单个工作簿中的所有excel工作表。我在运行函数时出错 我想这是因为角色太多了。我有大约300个工作表需要重命名,所以我想做一个重命名Excel工作表VBA函数,excel,vba,excel-formula,Excel,Vba,Excel Formula,以下是一个VBA函数,用于重命名单个工作簿中的所有excel工作表。我在运行函数时出错 我想这是因为角色太多了。我有大约300个工作表需要重命名,所以我想做一个if语句,这样如果名称的LEN大于31,那么它只使用前30个字符命名文件,剩下的字符。此外,如果有“/,?,*[,]”等字符,则应将其替换为空。我对VBA一无所知,我来自Python背景:) 用于重命名工作表的Excel函数: Sub RenameSheet() Dim rs As Worksheet For Each rs In Sh
if
语句,这样如果名称的LEN
大于31,那么它只使用前30个字符命名文件,剩下的字符。此外,如果有“/,?,*[,]”等字符,则应将其替换为空。我对VBA一无所知,我来自Python背景:)
用于重命名工作表的Excel函数:
Sub RenameSheet()
Dim rs As Worksheet
For Each rs In Sheets
rs.Name = rs.Range("B2")
Next rs
End Sub
使用左键功能:
Sub RenameSheet()
Dim rs As Worksheet
For Each rs In Sheets
Debug.Print rs.Range("B2") 'print file name before creating file
rs.Name = Left(rs.Range("B2"), 30) 'first 30 chars only
Next rs
End Sub
使用左键功能:
Sub RenameSheet()
Dim rs As Worksheet
For Each rs In Sheets
Debug.Print rs.Range("B2") 'print file name before creating file
rs.Name = Left(rs.Range("B2"), 30) 'first 30 chars only
Next rs
End Sub
问题可能是禁止使用的字符。您可以尝试以下代码。它将首先删除所有这些字符,然后最终将工作表名称的长度减少到30个字符
Sub RenameSheet()
Dim rs As Worksheet
Dim sWorksheetName As String
For Each rs In Sheets
'Store desired worksheet name to a string variable
sWorksheetName = rs.Range("B2")
'Replace forbidden characters
sWorksheetName = Replace(sWorksheetName, "/", "")
sWorksheetName = Replace(sWorksheetName, "\", "")
sWorksheetName = Replace(sWorksheetName, "?", "")
sWorksheetName = Replace(sWorksheetName, "*", "")
sWorksheetName = Replace(sWorksheetName, "[", "")
sWorksheetName = Replace(sWorksheetName, "]", "")
'If the desired name is longer then 30 characters, only the first 30 characters
'are used as worksheet name
If Len(sWorksheetName) > 30 Then
sWorksheetName = Left(sWorksheetName, 30)
End If
'Rename the worksheet
rs.Name = sWorksheetName
Next rs
End Sub
问题可能是禁止使用的字符。您可以尝试以下代码。它将首先删除所有这些字符,然后最终将工作表名称的长度减少到30个字符
Sub RenameSheet()
Dim rs As Worksheet
Dim sWorksheetName As String
For Each rs In Sheets
'Store desired worksheet name to a string variable
sWorksheetName = rs.Range("B2")
'Replace forbidden characters
sWorksheetName = Replace(sWorksheetName, "/", "")
sWorksheetName = Replace(sWorksheetName, "\", "")
sWorksheetName = Replace(sWorksheetName, "?", "")
sWorksheetName = Replace(sWorksheetName, "*", "")
sWorksheetName = Replace(sWorksheetName, "[", "")
sWorksheetName = Replace(sWorksheetName, "]", "")
'If the desired name is longer then 30 characters, only the first 30 characters
'are used as worksheet name
If Len(sWorksheetName) > 30 Then
sWorksheetName = Left(sWorksheetName, 30)
End If
'Rename the worksheet
rs.Name = sWorksheetName
Next rs
End Sub
您可以使用
Replace()
删除不需要的字符,使用Left()
获取前30个字符您可以使用Replace()
删除不需要的字符,使用Left()
获取前30个字符在答案中添加Debug.Print
。试试看。它应该先打印文件名,然后再保存。上次打印的文件名是什么?我在答案中添加了Debug.print
。试试看。它应该在保存文件之前打印文件名。上次打印的文件名是什么?