使用VBA将CSV文件读入excel,然后将结果输出到特定的工作表
我已经搜索了一段时间,找不到简单的解决方案。我有一个csv文件,我想使用vba将其读入excel,并将结果输出到特定工作表上的特定单元格区域 我一直在使用下面的代码,但如果我运行两次excel宏,它基本上会将数据追加到下一个空白列上,而不是复制到该列上。它也只是将其粘贴到活动工作表中,而不是我的特定工作表中 有没有关于我如何做到这一点的建议 谢谢使用VBA将CSV文件读入excel,然后将结果输出到特定的工作表,excel,vba,csv,Excel,Vba,Csv,我已经搜索了一段时间,找不到简单的解决方案。我有一个csv文件,我想使用vba将其读入excel,并将结果输出到特定工作表上的特定单元格区域 我一直在使用下面的代码,但如果我运行两次excel宏,它基本上会将数据追加到下一个空白列上,而不是复制到该列上。它也只是将其粘贴到活动工作表中,而不是我的特定工作表中 有没有关于我如何做到这一点的建议 谢谢 Public Sub Example() Const csPath As String = "starting_positions.csv"
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
placepriorWith…
块将清除整个工作表,因此新数据将被放置到与以前相同的位置.Refresh
方法
如果您一直在合并代码部分,请尝试使用宏记录器手动传递任何步骤。对于您的情况,这将解决大多数问题。祝你好运 工作得很好。谢谢实际上是一个跟进。当我打开excel工作表时,我只会使用一次。我应该担心关闭连接吗?或者它是这样好吗?@user1898958我认为这样的“连接”是可以离开的——我经常使用这种一次性解决方案,甚至不去想它。但是,如果您非常确定这是“启动并忘记”解决方案,请添加以下代码行:
.Name=“Conn\u Name”
-连接设置选项块中的任意位置,以及此工作簿.Connections(“Conn\u Name”)。在结束后删除。这将添加连接,重试数据,然后将其删除。