我正在做一个从其他excel文件导入工作表的宏,然后在导入后重命名它们。
如果我使用Worksheets.Count方法重命名工作表,我无法在每次导入任务后重置计数器,导致最后添加的数字的文件名总是增加。但是,代码将使用包含多个工作表的文件。
因为我想用另一个名字重命名它:
ActiveSheet.Name = i & "-" & "MON" & "-" & ShName
如果excel文件只有一个工作表,则上面的代码正常工作,但如果源excel文件包含多个工作表,则会停止,但错误:“'Runtime 1004'无法将工作表重命名为与另一个工作表相同的名称,引用的对象库或Visual Basic引用的工作簿“
我为源表名称“ShName”添加了一个变量。但是这会导致错误,可能是因为源excel文件中的每个工作表后变量名称都没有更改。我该如何纠正这个问题?
For i = 10 To max_phase Step 10
....
For Each sheet In Workbooks(fileName).Worksheets
total = Workbooks(Macro_Filename).Worksheets.Count
ShName = Workbooks(fileName).ActiveSheet.Name
Workbooks(fileName).Worksheets(sheet.Name).Copy _
after:=Workbooks(Macro_Filename).Worksheets(total)
' ActiveSheet.Name = i & "-" & "MON" & "-" & ShName
Next sheet
....
Next i
答案 0 :(得分:0)
我假设你在这里做两个循环,每个工作簿一个,每个工作表一个。我的代码中的i指的是工作簿的数量,并且对于同一工作簿中的每个工作表仍为1。在这种情况下,如果您想完成您所描述的内容,则需要使用第二个唯一的每张计数器。例如:
For i = 10 To max_phase Step 10
....
sheetNum = 1
For Each sheet In Workbooks(fileName).Worksheets
sheetNum = sheetNum + 1
total = Workbooks(Macro_Filename).Worksheets.Count
ShName = Workbooks(fileName).ActiveSheet.Name
Workbooks(fileName).Worksheets(sheet.Name).Copy _
after:=Workbooks(Macro_Filename).Worksheets(total)
ActiveSheet.Name = sheetNum & "-" & "MON" & "-" & ShName
Next sheet
....
Next i