繁体   English   中英

将数据复制到新工作表将引发“下标超出范围”

[英]Copying data to new worksheet throws 'Subscript out of range'

我正在VBA中的一个模块上进行以下工作:

  • 打开一个对话框,在其中选择另一个Excel文件进​​行导入
  • 从所选文件中名为“ Rapport”的工作表中复制数据(该工作表始终为“ Rapport”,因为它是始终以相同方式格式化的导出文件)
  • 复制的数据粘贴到新工作表中,该工作表重命名为“数据”。

当我运行模块时,出现错误提示

“下标超出范围”

因此,对话框打开,我可以选择一个文件,然后将其打开,但是在复制/粘贴数据时会失败。

这是代码:

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

对我做错的事情有什么建议吗?

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

对我做错的事情有什么建议吗?

第二个工作簿(Rapport_auto)未打开。 使用VBA将工作表复制到另一个工作簿

@Vityata,“ Rapport_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)

我在拆分代码以尝试调试较小的位,但最终它才起作用:)

暂无
暂无

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

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