kann man über VBA Abfragen, ob und welche Trennzeichen in einer Textdatei vorhanden sind?
Vielen Dank im Voraus!
MFG Andre
Sub trennzeichen()
Dim s As String
Dim z As Long, i As Long
s = "Dies ist ein Test" & vbLf & "Das ist die nächste Zeile" & vbCr & _
"Das die übernächste." & vbCrLf
For i = 1 To Len(s): Cells(Asc(Mid(s, i, 1)), 3) = Cells(Asc(Mid(s, i, 1)), 3) + 1: Next
For i = 1 To 255
Cells(i, 1) = i
If i > 32 Then Cells(i, 2) = Chr(i)
Next
End Sub
Sub Test_auf_CRLF()
Dim Zelle As Object
'Im Range Bereich eigenen Bereich angeben
For Each Zelle In Range("C2:C20")
Zelle.Select
If InStr(Zelle, vbCrLf) Then MsgBox "CRLF" _
Else If InStr(Zelle, vbLf) Then MsgBox "LF" _
Else If InStr(Zelle, vbCr) Then MsgBox "CR"
Next Zelle
End Sub
If Instr(sInhalt, vbCrLf) > 0 then
Oder Du ersetzt einfach alle CrLf durch LF, danach hast Du in jedem Fall das Lf als Trennzeichen:
sInhalt = replace(sInhalt, vbCrLf, vbLf)
ArrayData = Split(sInhalt, vbLf)
Gruß, JürgenUm zu überprüfen, ob LF (Line Feed) oder CRLF (Carriage Return Line Feed) in einer Textdatei vorhanden sind, kannst du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
Textdatei öffnen: Verwende den folgenden VBA-Code, um eine Textdatei zu öffnen und ihren Inhalt zu lesen.
Dim sFilename As String
Dim sInhalt As String
Dim F As Integer
sFilename = Application.GetOpenFilename(Filefilter:="Texte(*.txt),*.txt", Title:="Bitte Datendatei öffnen")
If sFilename = False Then Exit Sub
F = FreeFile
Open sFilename For Binary As #F
sInhalt = Space$(LOF(F))
Get #F, , sInhalt
Close
Überprüfen der Trennzeichen:
Nach dem Einlesen des Inhalts kannst du die Trennzeichen mit InStr() überprüfen.
If InStr(sInhalt, vbCrLf) > 0 Then
MsgBox "CRLF gefunden"
ElseIf InStr(sInhalt, vbLf) > 0 Then
MsgBox "LF gefunden"
ElseIf InStr(sInhalt, vbCr) > 0 Then
MsgBox "CR gefunden"
End If
Daten aufteilen:
Um die Daten auf Basis des Trennzeichens zu splitten, kannst du Split() verwenden.
Dim ArrayData() As String
ArrayData = Split(sInhalt, vbCrLf) ' oder vbLf
Fehler: Datei kann nicht geöffnet werden
Stelle sicher, dass der Pfad zur Datei korrekt ist und die Datei nicht von einem anderen Programm verwendet wird.
Fehler: Keine Trennzeichen gefunden
Überprüfe, ob die Textdatei tatsächlich Trennzeichen enthält. Du kannst den Inhalt der Datei in einer Textverarbeitung anzeigen lassen.
Fehler: ArrayData ist leer
Achte darauf, das richtige Trennzeichen zu verwenden. Wenn du vbCrLf verwendest, aber die Datei nur vbLf enthält, wird das Array leer bleiben.
Eine alternative Methode zur Überprüfung von LF und CRLF besteht darin, den Inhalt der Textdatei in eine Excel-Tabelle zu importieren. Hier kannst du dann die Trennzeichen in den Zellen untersuchen. Eine einfache Möglichkeit ist, den Inhalt in eine Zelle einzufügen und dann die FIND()-Funktion in Excel zu verwenden.
Hier sind einige praktische Beispiele für die Verwendung von VBA zur Überprüfung von LF und CRLF:
Makro zum Zählen der Trennzeichen:
Sub trennzeichen()
Dim s As String
Dim i As Long
s = "Dies ist ein Test" & vbLf & "Das ist die nächste Zeile" & vbCr & _
"Das die übernächste." & vbCrLf
Dim lfCount As Long, crCount As Long
lfCount = Len(s) - Len(Replace(s, vbLf, ""))
crCount = Len(s) - Len(Replace(s, vbCr, ""))
MsgBox "LF Count: " & lfCount & vbCrLf & "CR Count: " & crCount
End Sub
Trennzeichen umwandeln:
sInhalt = Replace(sInhalt, vbCrLf, vbLf)
ArrayData = Split(sInhalt, vbLf)
vbCrLf als Trennzeichen, wenn du sicher bist, dass deine Textdatei sowohl CR als auch LF enthält.vbLf verwendest.Replace(), um unerwünschte Trennzeichen zu entfernen, bevor du die Daten weiterverarbeitest.1. Welche Unterschiede gibt es zwischen LF und CRLF?
LF (Line Feed) ist ein einzelnes Zeichen (ASCII 10), das einen Zeilenumbruch erzeugt, während CRLF (Carriage Return Line Feed) aus zwei Zeichen (ASCII 13 und 10) besteht.
2. Wie kann ich überprüfen, ob ich in einer Excel-Zelle LF oder CRLF habe?
Du kannst die Funktion InStr() in VBA verwenden, um die Zelle auf die entsprechenden Trennzeichen zu überprüfen.
3. Was passiert, wenn ich ein Textformat verwende, das nur LF enthält?
In diesem Fall wird die Verwendung von vbCrLf beim Splitten der Daten nicht funktionieren. Du solltest stattdessen vbLf verwenden.
4. Kann ich ASCII-Werte in VBA verwenden?
Ja, du kannst ASCII-Werte verwenden, um spezifische Zeichen in Strings zu identifizieren, z.B. Chr(10) für LF und Chr(13) für CR.