簡體   English   中英

如何通過VBA在UNIX文本文件中標識隱藏的回車符?

[英]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))

但這些都沒有找到回車的特征。

有關如何識別文本文件中使用的回車字符的任何建議?

*編輯以包括我嘗試過的所有內容

您可以測試ASCII10ASCII13

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM