使用VBA将CSV文件读入Excel,然后将结果输出到特定工作表

时间:2013-01-29 18:24:15

标签: excel vba csv

我一直在寻找一段时间,找不到简单的解决方案。我有一个csv文件,我想用vba读入excel并将结果输出到特定工作表上的特定单元格区域。

我一直在使用以下代码,但如果我运行excel宏两次,它基本上将数据附加到下一个空白列而不是复制它。它也只是粘贴到活动工作表而不是我的特定工作表。

关于我如何做到这一点的任何建议?

谢谢,

Public Sub Example()
    Const csPath As String = "starting_positions.csv"
    Dim ws As Excel.Worksheet
    Set ws = Excel.ActiveSheet
    With ws.QueryTables.Add("TEXT;" & csPath, ws.Cells(1, 1))
        .FieldNames = True
        .AdjustColumnWidth = True
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileCommaDelimiter = True
        ''// This array will need as many entries as there will be columns:
        .TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat)
        .Refresh
    End With
End Sub

1 个答案:

答案 0 :(得分:4)

假设您在同一工作簿中运行代码,需要收集CSV数据,请尝试以下操作:

  1. Set ws = Excel.ActiveSheet替换为Set ws = ThisWorkbook.Sheets(1)Set ws = ThisWorkbook.Sheets("Sheet1"),以使用其索引或名称定义任何特定工作表。
  2. ws.UsedRange.ClearContents 之前 With...阻止将清除整个工作表,因此新数据将放置在与之前相同的位置。
  3. 还有一个提示:如果您要多次使用此宏 - 请勿在每次创建新连接时创建。如果所有选项都相似 - 只使用.Refresh方法。

    如果你坚持使用代码部分的合并 - 尝试使用宏记录器手动传递任何步骤。对于您的情况,这将解决大多数麻烦。祝你好运!