我已经寻找了一段时间,也找不到一个简单的解决方案。我有一个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
发布于 2013-01-30 04:37:56
假设您在需要收集CSV数据的同一个工作簿中运行代码,请尝试以下操作:
将Set ws = Excel.ActiveSheet
替换为Set ws = ThisWorkbook.Sheets(1)
或Set ws = ThisWorkbook.Sheets("Sheet1")
以使用其索引或name.
ws.UsedRange.ClearContents
place Set ws = ThisWorkbook.Sheets("Sheet1")
来定义任何特定工作表之前的 With...
块将清除整个工作表,因此新数据将被放置到与以前相同的位置。再给你一个提示:如果你要多次使用这个宏,-不要每次创建一个新的连接。如果所有选项都是相似的-只使用.Refresh
方法。
如果你被代码部分的合并所困扰--试着使用宏录制器手动跳过任何步骤。对于您的情况,这将解决大多数问题。祝好运!
https://stackoverflow.com/questions/14589653
复制相似问题