如何使用Excel中的VBA将工作簿中的单个选项卡复制到主工作簿中

我试图从一个指定的文件夹中的工作簿中拉一个选项卡到主工作簿。 到目前为止,这是我所拥有的:

Sub GetSheets() Path = "D:\APQP\APQP\Open Projects\" Filename = Dir(Path & "*.xlsx") Do While Filename <> "" Workbooks.Open Filename:=Path & Filename, ReadOnly:=True For Each Sheet In ActiveWorkbook.Sheets Sheets("5-Phase").Select Sheets("5-Phase").Copy Before:=ThisWorkbook.Sheets(1) Next Workbooks(Filename).Close Filename = Dir() Loop End Sub 

现在,当我运行它时,它将使用该文件夹中第一个wookbook中的50个选项卡填充主工作簿,而不是应对选项卡,并转到下一个工作簿并处理该工作簿中的选项卡。 任何帮助将是伟大的。

你的代码有两个主要的问题。 For循环是不必要的,而且您没有使用打开的工作簿。 像这样的东西应该为你工作:

 Sub GetSheets() Dim wb As Workbook Dim sPath As String Dim sFileName As String Set wb = ThisWorkbook sPath = "D:\APQP\APQP\Open Projects\" sFileName = Dir(sPath & "*.xlsx") Application.ScreenUpdating = False Application.EnableEvents = False On Error Resume Next Do While Len(sFileName) > 0 With Workbooks.Open(sPath & sFileName, ReadOnly:=True) .Sheets("5-Phase").Copy Before:=wb.Sheets(1) .Close False End With sFileName = Dir() Loop On Error GoTo 0 Application.ScreenUpdating = True Application.EnableEvents = True End Sub