excel - 如何通过 VBA 识别 UNIX 文本文件中的隐藏回车符?

标签 excel unix text-files ascii vba

我有一个用 Excel/VBA 编写的应用程序,它读取用 UNIX 编写的文本文件。这些文件包含在有限元建模仿真设置中,其中 20k+ 文本文件中的每一行都是一个单独的设置。我的应用程序搜索特定的设置并以简单的英语将它们返回给用户。特定的行可能如下所示:

model.settings.excitation.modes=50

到目前为止,这行代码可以找到 '=' 符号和行尾之间的文本
InStr(1, FileContents, vbLf)

其中 FileContents 是 '=' 符号之后的整个文本文件。

我的应用程序上游某处的某处更改了假定的回车符“vbLf”,但无法找到它,但在 Notepad++ 中查看时它显然存在。我的应用程序依赖于找到这个回车,现在它不起作用。

我试过使用:
Asc(Mid(AdsFileContentsX, 3, 1))

隔离回车符,但我最终得到下一行的一个字符,所以这也不起作用。

我也尝试了以下所有方法
InStr(1, FileContents, vbLf)
InStr(1, FileContents, vbCrLf)
InStr(1, FileContents, vbCr)
InStr(1, FileContents, vbNewLine)
InStr(1, FileContents, Chr(10))
InStr(1, FileContents, Chr(13))

但这些都没有找到回车符。

有关如何识别文本文件中使用的回车符的任何建议?

*编辑以包括我尝试过的所有内容

最佳答案

您可以测试 ASCII10 或 ASCII13:

Sub hskdjfh()
    v = Range("A1").Value
    If InStr(1, v, Chr(10)) > 0 Or InStr(1, v, Chr(13)) > 0 Then
        MsgBox "got a return"
    Else
        MsgBox "no return"
    End If
End Sub

编辑#1:

这是确定单元格中确切内容的一种方法:
Sub WhatsInThere()
    Dim s As String, L As Long
    Dim msg As String, i As Long

    msg = ""
    s = Range("A1").Text
    L = Len(s)

    For i = 1 To L
        msg = msg & vbCrLf & i & vbTab & Mid(s, i, 1) & vbTab & AscW(Mid(s, i, 1))
    Next i

    MsgBox msg
End Sub

在这种情况下,我在 之后放置了一个 Alt+Enter。我 在单元格 A1 :

enter image description here

关于excel - 如何通过 VBA 识别 UNIX 文本文件中的隐藏回车符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37116636/

相关文章:

java - 从另一个目录读取 .txt 文件

unix - 控制台脚本使用配置文件的 Unix 方式是什么?

shell - 如果 awk 中的语句没有按预期工作

vba - VBA-Excel-出现错误时转到用户窗体

c# - 在 c# (Vsto) 的 Excel 2007 中保存 Excel 模板 2003 时出现问题

linux - 跨不同机器共享主目录的解决方案 - 更改 $HOME 变量?

java - 如何将对象压缩为字符串而不丢失太多信息

python - 在 Python 中对文本文件进行排序

Excel:如何将两列合并为一列(来自不同的工作表或单独的列)

筛选两列并提取数据的Excel VBA代码