[英]How to identify a hidden carriage return character in a UNIX text file over 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
在這種情況下, 我在單元格A1中的i之后放置了一個Alt + Enter :
很確定VBA中有一個bug,我有013 010 013而且vba看不到它,它只看到它為013 010,
使用replace從字符串中刪除013 010,然后檢查結果是那么另一個013,所以由於這個bug它需要2行代碼來刪除它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.