【发布时间】:2019-03-03 23:03:09
【问题描述】:
由于我是 VBA 新手,我创建了一个代码,它可以打开一个 .csv 文件并将数据从 .csv 复制到一个 excel 文件,而无需同时打开两者。
实际上它适用于 excel 文件,但是当我使用 .csv 文件时,它会显示一条错误消息“订阅超出范围”。我该如何解决这个问题?谢谢!
Sub Copywb1()
Dim wkb1 As Workbook
Dim sht1 As Worksheet
Dim wkb2 As Workbook
Dim sht2 As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Setwkb1 = ThisWorkbook
Setwkb2 = Workbooks.Open("C:\Desktop\AAA.xlsx")
Setwkb1 = Workbooks.Open("C\Reports\BBB.csv")
Setsht1 = wkb1.Sheets("Reports")
Setsht2 = wkb2.Sheets("Fees")
sht1.Range("A1:BM9").Copy
sht2.Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
wkb2.Close True
wkb1.Close True
End Sub
【问题讨论】:
-
一个 .csv 文件只能有一个“工作表”,并且不会被命名(.csv != Excel 文件)。只需使用
Sheets(1)。您还缺少Set之后的空格。应该是Set wkb1,而不是Setwkb1。 -
我刚刚注意到您在
Set.. 之后缺少空格。 -
我要感谢 Comintern 和 ashleedawg 对我的帮助。我的问题是当我在 vba (demo_loadDatafromCSV) 下面使用时,它会将复制的数据粘贴到运行我的宏的 excel 中。实际上我需要将其粘贴到另一个 .xlsx 文件表,并且该 excel 有多个工作表,但我需要粘贴到一个名为(费用)的工作表