【问题标题】:Remove last character in csv file, Excel vba删除csv文件中的最后一个字符,Excel vba
【发布时间】:2015-06-10 07:27:39
【问题描述】:

我正在从 Excel (2013) 生成一个 CSV 文件,如下所示:

.SaveAs Filename:= _
    filePath & MyFileName, _
    FileFormat:=xlCSV, _
    Local:=True, _

这很好,但在最后一行我也得到了分号:

994085;None ApS.;2;G; 12 ;31-12-2015; 40 ; -   ;Operational TB ;

如何删除最后一个 ;在那个文件里?

我看到它在字符串中很容易。我不确定我是否可以将整个文件放入字符串中。它大约是 6-700K 个字符。无论我实施什么,它都必须非常快

任何想法表示赞赏!

【问题讨论】:

  • 一次性打开文件并读入MyData/Array。见Open the text file in memory
  • @SiddharthRout 谢谢,但有时文件可以得到 2-3M 个字符。难道没有一种快速的方法来只获取最后一行吗?
  • 在上面的代码中strData(ubound(strData))会给你最后一行
  • 不,我不是这个意思。在该代码中,在strData() = Split(MyData, vbCrLf) 行之后,键入msgbox strData(ubound(strData))。你得到了什么?如果不是,,则将上面的行替换为Msgbox strData(ubound(strData)-1)。在这两种情况下你会得到什么?
  • 问题的最初原因可能是在最后一行的末尾有一个包含空字符串的单元格。如果您删除它(以编程方式或手动方式,您可以删除最后一个 ;

标签: vba excel csv


【解决方案1】:
Open "partnumbers.txt" For Output As #2
If .SelectedItems.Count <> 0 Then
xDirect$ = .SelectedItems(1) & "\"
xFname$ = Dir(xDirect$, 7)
Do While xFname$ <> ""
If Right(xFname$, 1) = "1" Then
  Print #2, Left(xFname$, 13)
  ActiveCell.Offset(xRow) = Left(xFname$, 13)
End If
xRow = xRow + 1
xFname$ = Dir
Loop
End If
Close #2

基本上你可以使用这样的东西。在这里,我数了 13 个字符,并从 txt 中的每一行中删除了其余字符;显然,这段代码需要根据您的需要重新安排,但您可以看看这个理论。祝你好运!

【讨论】:

    猜你喜欢
    • 2013-09-22
    • 2021-11-06
    • 2023-03-21
    • 2016-11-08
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多