【发布时间】:2019-05-24 21:02:51
【问题描述】:
此脚本循环通过文件路径并将所有工作簿组合到主工作簿中,并将每个工作簿划分为主文件中的工作表。
我有一行 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
【问题讨论】:
-
将
activeworksheet更改为ActiveSheet -
@DisplayName 它仍然将它们命名为 sheet1 的副本。会不会是
For Each循环所在的ws.copy after:=mainwb.sheets? -
您要在哪个工作簿的哪个工作表中的哪个单元格中命名新工作表?
-
无论我从文件夹中抓取什么表格。所以我进去,抓住该路径中的第一个工作簿(sheet1),无论该工作簿的单元格
B1中的值是什么,我想将工作表命名为当它移动到MainWb -
然后
ActiveSheet.Name = ws.Range("B1").Value