此脚本循环遍历文件路径,并将所有工作簿组合到一个主工作簿中,并将每个工作簿都分成一个在主文件中的工作表。
我有一行ws.Name = activeworksheet.Range("B1").Value
,将工作表命名为第一个工作簿工作表Sheet1的副本,并在工作表之后命名每个工作表,如Sheet1(2)。
如何将其更改为要合并到主工作簿中的工作簿的单元格B1中的值?
脚本的其余部分:
Option Explicit
Sub CombineWorkbooks()
Dim MainWB As Workbook
Dim sDirPath As String
Dim sFileName As String
Dim sFilePath As String
Dim wb As Workbook
Dim ws As Worksheet
sDirPath = "M:\New folder"
sFileName = Dir(sDirPath & "\*.xlsx")
Set MainWB = ThisWorkbook
Do While Len(sFileName) > 0
sFilePath = sDirPath & "\" & sFileName
Set wb = Workbooks.Open(Filename:=sFilePath)
For Each ws In wb.Sheets
ws.Copy After:=MainWB.Sheets(MainWB.Sheets.Count)
ws.Name = activeworksheet.Range("B1").Value
Next ws
wb.Close SaveChanges:=False
sFileName = Dir
Loop
End Sub
答案 0 :(得分:1)
在.Copy()
对象的Sheet
方法之后,新创建的图纸变为 active ,而ws
仍保留对原始< / em>工作表
所以像下面这样
For Each ws In wb.Sheets
ws.Copy After:=MainWB.Sheets(MainWB.Sheets.Count)
ActiveSheet.Name = ws.Range("B1").Value
Next