Excel 将数据复制到新工作表会抛出';下标超出范围';

Excel 将数据复制到新工作表会抛出';下标超出范围';,excel,vba,Excel,Vba,我正在VBA中开发一个模块,该模块应: 打开一个对话框,选择另一个Excel文件进行导入 复制所选文件中名为“融洽关系”的工作表中的数据(该工作表始终称为“融洽关系”,因为它是一个导出文件,其格式始终相同) 复制的数据将粘贴到新的工作表中,该工作表将重命名为“数据” 当我运行模块时,我得到一个错误 “下标超出范围” 因此,对话框打开,我可以选择一个文件,打开它,但当涉及到复制/粘贴数据时,它失败了 代码如下: Sub Import() Dim WS As Worksheet

我正在VBA中开发一个模块,该模块应:

  • 打开一个对话框,选择另一个Excel文件进行导入
  • 复制所选文件中名为“融洽关系”的工作表中的数据(该工作表始终称为“融洽关系”,因为它是一个导出文件,其格式始终相同)
  • 复制的数据将粘贴到新的工作表中,该工作表将重命名为“数据”
当我运行模块时,我得到一个错误

“下标超出范围”

因此,对话框打开,我可以选择一个文件,打开它,但当涉及到复制/粘贴数据时,它失败了

代码如下:

Sub Import()
    Dim WS As Worksheet
    Dim fd As Office.FileDialog
    Dim Wb As Workbook
    Dim txtFilePath As String
    Dim txtFileName As String
    Dim fso As New FileSystemObject

    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    With fd
        .AllowMultiSelect = False

        'Title of dialog box.
        .Title = "Select a file"

        If .Show = True Then
            txtFilePath = .SelectedItems(1)
        End If
    End With

    txtFileName = fso.GetFileName(txtFilePath)
    Workbooks.Open Filename:=txtFilePath

    'The workbook, the data is pasted to, is called "Rapport_auto"
    Workbooks(txtFileName).Worksheets("Rapport").Copy _
        after:=Workbooks("Rapport_auto").Worksheets(1)

    'Change name of active sheet
    ActiveSheet.Name = "Data"

    'Close imported workbook
    Workbooks(txtFileName).Close
End Sub
对我做错了什么有什么建议吗

//更新//在调试过程中,我解决了这个问题-请参阅下面的回复。

对我的错误有什么建议吗

第二个工作簿
(融洽关系自动)
未打开。
@Vityata,“Rapport\u auto”文件是我运行代码的文件,所以它应该是打开的

然而,我刚刚解决了这个问题-我不知道为什么它工作得更好,但解决方案是将代码更改为:

Dim currentFileName As String

currentFileName = ActiveWorkbook.Name
Set Wb = Workbooks(currentFileName)

Workbooks(txtFileName).Worksheets("Rapport").Copy _
    after:=Wb.Worksheets(1)
而不仅仅是

Workbooks(txtFileName).Worksheets("Rapport").Copy _
    after:=Workbooks("Rapport_auto").Worksheets(1)

我试图将代码拆分以调试较小的位,但最终它成功了:)

@Jeeped-你可以,我正在考虑其他一些事情。调试时在哪一行出现错误?