excel - 有没有办法用 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
推荐阅读
- reporting-services - 修复行而不添加框大小
- react-native - TypeError:navigation.getParam 不是函数。(在 'navigation.getParam('name')' 中,'navigation.getParam' 未定义)
- excel - 如何再次启用该复选框?
- jsf - 页面加载的事件顺序是什么?
- python - 在图像识别任务中如何处理意外图像
- reactjs - 在函数调用中组合 React HTML DOM 事件时处理类型
- sql - 找到一个值并给出一些信息
- rdf - 空白节点的标识
- python - 如何仅在 Pandas DataFrame 中的列为 1 时填写
- html - 行单击时未在数据表上删除 JQuery 类