从其他Excel文件导入工作表

时间:2014-12-11 10:55:30

标签: excel excel-vba vba

我正在做一个从其他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

1 个答案:

答案 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