Comment identifier un caractère de retour chariot masqué dans un fichier texte UNIX sur VBA?

J’ai une application écrite en Excel / VBA qui lit les fichiers texte écrits sous UNIX. Ces fichiers consistent en des parameters de simulation de modélisation par éléments finis, où chaque ligne d’un fichier texte de 20 k + est un paramètre individuel. Mon application recherche un paramètre particulier et le renvoie à l’utilisateur en anglais. Une ligne particulière pourrait ressembler à ceci:

model.settings.excitation.modes=50 

Jusqu’à présent, cette ligne de code a travaillé pour trouver le texte entre le signe ‘=’ et la fin de la ligne

 InStr(1, FileContents, vbLf) 

où FileContents est le fichier texte entier après le symbole ‘=’.

Quelque chose quelque part en amont de mon application a changé le caractère de retour chariot supposé ‘vbLf’ ne peut pas être trouvé, mais il est clairement là lors de sa visualisation dans Notepad ++. Mon application dépend de la recherche de ce retour chariot, et maintenant cela ne fonctionne plus.

J’ai essayé d’utiliser:

 Asc(Mid(AdsFileContentsX, 3, 1)) 

pour isoler le caractère de retour chariot mais je me retrouve avec un caractère de la ligne suivante, donc cela ne fonctionne pas non plus.

J’ai essayé tous les dessous aussi

 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)) 

mais aucun d’entre eux n’a trouvé le caractère de retour chariot.

Des suggestions sur la façon d’identifier le caractère de retour chariot utilisé dans un fichier texte?

* édité pour inclure tout ce que j’ai essayé

Vous pouvez tester ASCII10 ou 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 

EDIT # 1:

Voici une façon de déterminer exactement ce qu’il y a dans une cellule:

 Sub WhatsInThere() Dim s As Ssortingng, L As Long Dim msg As Ssortingng, 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 

Dans ce cas, j’ai placé un Alt + Entrée juste après le i dans la cellule A1 :

entrer la description de l'image ici

Assez sûr il y a un bug dans VBA, j’ai 013 010 013 et vba ne peut pas le voir, il le voit seulement comme 013 010,

en supprimant 013 010 de la chaîne en utilisant replace, puis en vérifiant le résultat, il y a THRE encore 013, il faut donc 2 lignes de code pour le supprimer à cause de ce bogue