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