3

我一直在寻找一段时间,找不到简单的解决方案。我有一个 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
4

1 回答 1

4

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

  1. 替换Set ws = Excel.ActiveSheetSet ws = ThisWorkbook.Sheets(1)Set ws = ThisWorkbook.Sheets("Sheet1")使用其索引或名称定义任何特定工作表。
  2. ws.UsedRange.ClearContents放置 With...一个块将清除整个工作表,因此新数据将被放置到与以前相同的位置。

另一个提示:如果您要多次使用此宏- 不要每次都创建新连接。如果所有选项都相似 - 仅使用.Refresh方法。

如果您在合并代码部分时遇到困难 - 尝试使用宏记录器手动传递任何步骤。对于您的情况,这将解决大部分问题。祝你好运!

于 2013-01-29T20:37:56.167 回答