VBA从文件夹中的每个工作簿(每个excel的不同选项卡)复制一张工作表,并将其粘贴到主excel的选项卡中,与选项卡名称匹配

VBA从文件夹中的每个工作簿(每个excel的不同选项卡)复制一张工作表,并将其粘贴到主excel的选项卡中,与选项卡名称匹配,excel,vba,match,collect,Excel,Vba,Match,Collect,我有一个模板,每个月发给50个人,每个人都有自己的标签要填写。在主excel和模板中,每个工作簿都以其中一个人的名字命名,他们的选项卡都以他们的名字命名(两个工作簿中a列的第1页都有一个姓名列表) 我需要一个宏,它遍历我保存它们的文件夹,从它们的选项卡复制数据,并将其粘贴到主控文档中相应的选项卡中 我不知道该怎么做,因此非常感谢任何帮助将master.xlsm放入文件夹C:\Desktop\中,并将模板文件放入C:\Desktop\Q2\中 Sub-Update_-Master() Const

我有一个模板,每个月发给50个人,每个人都有自己的标签要填写。在主excel和模板中,每个工作簿都以其中一个人的名字命名,他们的选项卡都以他们的名字命名(两个工作簿中a列的第1页都有一个姓名列表)

我需要一个宏,它遍历我保存它们的文件夹,从它们的选项卡复制数据,并将其粘贴到主控文档中相应的选项卡中


我不知道该怎么做,因此非常感谢任何帮助

将master.xlsm放入文件夹
C:\Desktop\
中,并将模板文件放入
C:\Desktop\Q2\

Sub-Update_-Master()
Const QU=“Q2”
Const FOLDER=“C:\Desktop\”
Const MASTER=“MASTER.xlsm”
将wb作为工作簿,wbSrc作为工作簿
将ws作为工作表,将wsSrc作为工作表
将文件变暗为字符串,将sName变为字符串
Dim sAddr作为字符串,n作为整数
'打开主控形状并获取图纸名称列表
作为对象的Dim dict
Set dict=CreateObject(“Scripting.Dictionary”)
设置wb=工作簿。打开(文件夹和主文件夹)
对于wb.Sheets中的每个ws
添加ws.Name、ws.Index
下一个
'扫描文件夹
Application.ScreenUpdating=False
sFile=Dir(文件夹&QU&“\*.xlsm”)
当Len(sFile)>0时执行
'删除文件扩展名
sName=Replace(sFile,.xlsm,“”)
调试。打印sFile,sName
'在主机中检查名称
如果dict.存在(sName),则
设置ws=wb.Sheets(dict(sName))
其他的
如果MsgBox(sName&“未在主控中找到,请创建它?”,vbYesNo)=vbYes,则
设置ws=wb.Worksheets.Add(后面:=wb.Sheets(wb.Sheets.Count))
ws.Name=sName
其他的
设置ws=Nothing
如果结束
如果结束
'从源文件复制到主文件
如果不是的话,那么ws什么都不是
'开放源代码工作簿,工作表名称与工作簿相同
设置wbSrc=Workbooks.Open(文件夹&QU&“\”&sFile,True,True)
设置wsSrc=wbSrc.Sheets(sName)
'使用范围的左上角
sAddr=wsSrc.UsedRange.Cells(1,1).Address
wsSrc.UsedRange.Copy ws.Range(sAddr)
wbSrc.Close错误
n=n+1
如果结束
sFile=Dir
环
wb.Close Savechanges:=真
Application.ScreenUpdating=True
MsgBox n&“在文件夹和QU中找到文件”,vb信息
端接头