繁体   English   中英

将数据从一个Excel文件复制到另一个-下标超出范围

[英]Copying data from one excel file to another - Subscript out of range

我在下面的代码中尝试将excel文件数据复制到其他excel文件中,但出现错误: 运行时错误'9'下标超出范围

Sub Button1_Click()
Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False

directory = "\\test\CheckFile"
fileName = "test2.xlsx"

Do While fileName <> ""
Workbooks.Open (fileName)
For Each sheet In Workbooks(fileName).Worksheets
 total = Workbooks("Book1.xlt").Worksheets.Count
 Workbooks(fileName).Worksheets(sheet.Name).Copy _  //error appears here
 after:=Workbooks("Book1.xlt").Worksheets(total)
Next sheet

Workbooks(fileName).Close
fileName = Dir()
Loop

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

好的,我已重做我的答复,以说明您的最新信息。 我创建了以下文件夹: C:\\test\\CheckFile 里面有两个Excel文件,都保存为.xlsx。 我创建了一个空的PAY.xlsm并将其保存在其他位置(即不在test \\ CheckFile目录中)。 在运行代码之前,我打开了PAY.xlsm。

我认为模板文件.xlt会引起问题。 它们以不同的名称打开。 Workbooks.Open (fileName)转到打开Book2.xlt时,它将以Book21.xlsx的形式打开。 然后导致下标超出范围错误。

然后我运行了这段代码,它起作用了:

Sub Button1_Click()
    Dim directory As String, fileName As String, sheet As Worksheet, total As Integer

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    directory = "C:\test\checkfile\"
    fileName = Dir(directory)

    Do While fileName <> ""
        Workbooks.Open (fileName)

        For Each sheet In Workbooks(fileName).Worksheets
             total = Workbooks("PAY.xlsm").Worksheets.Count

              Workbooks(fileName).Worksheets(sheet.Name).Copy _
             after:=Workbooks("PAY.xlsm").Worksheets(total)
        Next sheet
        Workbooks(fileName).Close
        fileName = Dir()
    Loop

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True


End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM