【问题标题】:How to copy data from csv file to other excel files如何将数据从csv文件复制到其他excel文件
【发布时间】: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 有多个工作表,但我需要粘贴到一个名为(费用)的工作表

标签: vba excel


【解决方案1】:

这是我的一个工作示例,您应该能够相当容易地适应您的需求:

Sub demo_loadDataFromCSV()
    Const csvFile = "x:\mypath\myfile.csv"
    Dim ws As Worksheet, csv As Workbook, cCount As Long, cName As String

    ' Application.ScreenUpdating = False       'keep these commented-out until...
    ' Application.DisplayAlerts = False        ' ...done testing/troubleshooting!

    Set ws = ThisWorkbook.ActiveSheet          'remember where we parked
    Workbooks.Open csvFile                     'open the csv
    Set csv = ActiveWorkbook                   'create object of csv workbook
    cName = csv.Name                           'get name of csv while its open
    ActiveSheet.Columns("A:B").Copy            'copy columns A and B
    ws.Activate                                'go back to the first sheet
    ws.Range("A1").PasteSpecial xlPasteValues  'paste values
    cCount = Selection.Cells.Count             'count pasted cells
    csv.Close                                  'close CSV

    Application.DisplayAlerts = True           're-enable alerts
    Application.ScreenUpdating = True          'resume screen updates

    MsgBox cCount & " cells were copied from " & cName _
                  & " to " & ws.Parent.Name, vbInformation, "Done"
End Sub

更多信息:

【讨论】:

  • 我要感谢 Comintern 和 ashleedawg 对我的帮助。我的问题是当我在 vba (demo_loadDatafromCSV) 下面使用时,它会将复制的数据粘贴到运行我的宏的 excel 中。实际上我需要将其粘贴到另一个 .xlsx 文件表,并且该 excel 有多个工作表,但我需要粘贴到一个名为 (Fees) 的工作表。我该如何解决这个问题?
猜你喜欢
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2014-04-05
相关资源
最近更新 更多