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