首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用VBA将CSV文件读取到excel中,然后将结果输出到特定的工作表

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

Stack Overflow用户
提问于 2013-01-30 02:24:15
回答 1查看 18.1K关注 0票数 3

我已经寻找了一段时间,也找不到一个简单的解决方案。我有一个csv文件,我想使用vba将其读取到excel中,并将结果输出到特定工作表上的特定单元格区域中。

我一直在使用下面的代码,但如果我运行excel宏两次,它基本上会将数据追加到下一个空白列,而不是复制它。它还只将其粘贴到活动工作表中,而不是我的特定工作表中。

对如何做到这一点有什么建议吗?

谢谢,

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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方法。

如果你被代码部分的合并所困扰--试着使用宏录制器手动跳过任何步骤。对于您的情况,这将解决大多数问题。祝好运!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14589653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档