Vba 复制目标工作簿中的所有工作表

Vba 复制目标工作簿中的所有工作表,vba,excel,Vba,Excel,我得到运行时错误'2147和我的生活,我看不到我错过了什么 我所要做的就是从我当前的工作中确定打开一个选定的工作簿并复制到所有工作表中 多谢各位 Sub GetFile() Dim fNameAndPath As Variant Dim wb As Workbook, wb2 As Workbook Dim Ws As Worksheet fNameAndPath = Application.GetOpenFilename(FileFilter:="Exce

我得到运行时错误'2147和我的生活,我看不到我错过了什么

我所要做的就是从我当前的工作中确定打开一个选定的工作簿并复制到所有工作表中

多谢各位

    Sub GetFile()

Dim fNameAndPath As Variant
Dim wb As Workbook, wb2 As Workbook
Dim Ws              As Worksheet

fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLS), *.XLS", Title:="Select File To Be Opened")
If fNameAndPath = False Then Exit Sub
Workbooks.Open Filename:=fNameAndPath

Application.ScreenUpdating = False

    Set wb = ActiveWorkbook
    Set wb2 = Workbooks.Add(fNameAndPath)

For Each Ws In wb2.Worksheets
   Ws.Copy After:=wb.Sheets(wb.Sheets(1))
Next Ws

Application.ScreenUpdating = True

End Sub

这应该对你有用。小心,尽管它在目录中的所有文件中循环(对不起,我基本上是从我保存的脚本库复制/粘贴的)

错误发生在哪一行?在第Ws.Copy After:=wb.Sheets(wb.Sheets(1))行我在这一行thisWB.Sheets.Add After:=Worksheets(Worksheets.Count)后得到了相同的错误。
在thisWB
中启用了
保护工作簿吗?@RyanH我最后不得不更改它-显然有些事情不正确。这是一种工作方式,它正在将工作表复制到我隐藏的个人宏手册中。我还有一张纸,里面有嵌入的文件,它没有把它们带过来。啊,这是一个全新的蠕虫罐头。此代码仅带来工作表内容。我还得弄清楚如何移动其他物品。我可能需要一段时间才能回复你——工作等等
Public Sub this()
    Dim path As String, fileName As String
    Dim sheet As Worksheet, thisWB As Workbook, thatWB As Workbook
    Dim arr() As Variant
    Dim rowC As Long, colC As Long
    path = "C:\Users\dcoats\Desktop" & "\"
    fileName = Dir(path & "*.xl??")
    Set thisWB = ThisWorkbook
    Do While Len(fileName) > 0
        Set thatWB = Workbooks.Open(path & fileName, True, True)
            For Each sheet In thatWB.Sheets
                arr = sheet.UsedRange
                rowC = sheet.UsedRange.Rows.Count
                colC = sheet.UsedRange.Columns.Count
                thisWB.Sheets.Add After:=Worksheets(Worksheets.Count)
                thisWB.ActiveSheet.Range(thisWB.ActiveSheet.Cells(1, 1), thisWB.ActiveSheet.Cells(rowC, colC)).Value2 = arr
            Next sheet
        thatWB.Close False
        fileName = Dir()
    Loop
End Sub