有没有办法用VBA打开CSV并选择分隔符? [英] Is there a way to open CSV with VBA and choose the delimiter?

查看:33
本文介绍了有没有办法用VBA打开CSV并选择分隔符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个CSV,其中的数据用分号分隔,我想用VBA在Excel中打开它。 在我的例子中,此VBA代码将由来自不同位置的用户运行,因此我希望编写一个对本地设置不敏感的代码,并在任何地方生成相同的输出。

我已经尝试了几个代码,但都不起作用。看完文档后,我不明白为什么。

  • Set wb = Workbooks.Open(str_Path, Format:=6, Delimiter:=";")
  • Set wb = Workbooks.Open(str_Path, Format:=4)
  • Workbooks.Open Filename:=str_Path, Format:=xlCSV, Delimiter:=";"
  • Workbooks.OpenText str_Path, Semicolon:=True, DataType:=xlDelimited
  • Workbooks.OpenText str_Path, Local:=True

使用所有这些说明,工作簿已打开,但数据未正确分隔。

例如,下面是一个结果,因为我的编号&1,2";已被拆分,所以它似乎将第";,";而不是";上的行分隔开:

非常感谢您的点子!:-)

祝你有愉快的一天, 最大

推荐答案

指定分隔符的导入函数

使用工作表分配更新

Function ImportCSVFile(FilePath As String, Optional Sheet As Worksheet, Optional Delimiter As String = ",")
    ' Requires Reference: Microsoft Scripting Runtime
    Dim RowNumber As Long: RowNumber = 0
    Dim Arr() As String

    Dim oFSO As New FileSystemObject
    Dim oFS As Variant: Set oFS = oFSO.OpenTextFile(FilePath)
    
    If Sheet Is Nothing Then Set Sheet = ActiveSheet
    With Sheet
        Do Until oFS.AtEndOfStream
            RowNumber = RowNumber + 1
            Arr = Split(oFS.ReadLine, Delimiter)
            .Range(.Cells(RowNumber, LBound(Arr) + 1), .Cells(RowNumber, UBound(Arr) + 1)) = Arr
        Loop
    End With
End Function

这篇关于有没有办法用VBA打开CSV并选择分隔符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆