[英]Copying data to new worksheet throws 'Subscript out of range'
我正在VBA中的一个模块上进行以下工作:
当我运行模块时,出现错误提示
“下标超出范围”
因此,对话框打开,我可以选择一个文件,然后将其打开,但是在复制/粘贴数据时会失败。
这是代码:
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.