我一直在寻找一段时间,找不到简单的解决方案。我有一个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
答案 0 :(得分:4)
假设您在同一工作簿中运行代码,需要收集CSV数据,请尝试以下操作:
Set ws = Excel.ActiveSheet
替换为Set ws = ThisWorkbook.Sheets(1)
或Set ws = ThisWorkbook.Sheets("Sheet1")
,以使用其索引或名称定义任何特定工作表。ws.UsedRange.ClearContents
之前 With...
阻止将清除整个工作表,因此新数据将放置在与之前相同的位置。还有一个提示:如果您要多次使用此宏 - 请勿在每次创建新连接时创建。如果所有选项都相似 - 只使用.Refresh
方法。
如果你坚持使用代码部分的合并 - 尝试使用宏记录器手动传递任何步骤。对于您的情况,这将解决大多数麻烦。祝你好运!