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

使用VBA将CSV文件读入excel,然后将结果输出到特定的工作表,excel,vba,csv,Excel,Vba,Csv,我已经搜索了一段时间,找不到简单的解决方案。我有一个csv文件,我想使用vba将其读入excel,并将结果输出到特定工作表上的特定单元格区域 我一直在使用下面的代码,但如果我运行两次excel宏,它基本上会将数据追加到下一个空白列上,而不是复制到该列上。它也只是将其粘贴到活动工作表中,而不是我的特定工作表中 有没有关于我如何做到这一点的建议 谢谢 Public Sub Example() Const csPath As String = "starting_positions.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

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

  • Set ws=Excel.ActiveSheet
    替换为
    Set ws=thiswoolk.Sheets(1)
    Set ws=thiswoolk.Sheets(“Sheet1”)
    ,以使用其索引或名称定义任何特定的工作表
  • ws.UsedRange.ClearContents
    placeprior
    With…
    块将清除整个工作表,因此新数据将被放置到与以前相同的位置
  • 还有一个提示:如果要多次使用此宏,请不要每次都创建新连接。如果所有选项都相似-仅使用
    .Refresh
    方法


    如果您一直在合并代码部分,请尝试使用宏记录器手动传递任何步骤。对于您的情况,这将解决大多数问题。祝你好运

    工作得很好。谢谢实际上是一个跟进。当我打开excel工作表时,我只会使用一次。我应该担心关闭连接吗?或者它是这样好吗?@user1898958我认为这样的“连接”是可以离开的——我经常使用这种一次性解决方案,甚至不去想它。但是,如果您非常确定这是“启动并忘记”解决方案,请添加以下代码行:
    .Name=“Conn\u Name”
    -连接设置选项块中的任意位置,以及
    此工作簿.Connections(“Conn\u Name”)。在
    结束后删除
    。这将添加连接,重试数据,然后将其删除。