Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1724to1728
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bestimmte Zeichen in Datei hinzufügen?

Bestimmte Zeichen in Datei hinzufügen?
01.12.2019 22:48:59
Sergej
Hallo Leute,
ich habe über 200 *.cfg Dateien in jeweils 3 Verzeichnissen.
Jetzt muss ich zeilenweise in *.cfg-Dateien prüfen, ob nach dem $-Zeichen geschweifte Klammer { steht, wenn nicht dann soll nach dem $-Zeichen die geschweifte Klammer { gesetzt werden und dann vor dem nächsten Leerzeichen noch }. Wenn beispielweise die Zeile ohne weiteren Text endet sprich kein gesuchtes Leerzeichen vorhanden ist, dann soll die Klammer } gesetzt werden.
Verzeichnisse mit CFG-Dateien:
T:\Daten\2019\München\Datenkabel
P:\Daten\2018\Berlin\Datenkabel
S:\Kundendaten\2019\Hamburg\Datenkabel
Lässt sich bitte dies irgendwie per VBA lösen?
Vorher:
Datenkabel
${HST}
$TYP
${ZA}/${TA}/${PR}
$BEZ Achse $IP Gebäude:${GEB}
$POS $IL
${a}/${b}/${l}
Nachher:
Datenkabel
${HST}
${TYP}
${ZA}/${TA}/${PR}
${BEZ} Achse ${IP} Gebäude:${GEB}
${POS} ${IL}
${a}/${b}/${l}
Herzlichen Dank im Voraus!
LG,
Sergej

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Zeichen in Datei hinzufügen?
02.12.2019 00:08:06
volti
Hallo Sergej,
teste mal diesen Code hier, ob er Deinen Wunsch entsprechend umsetzt:
Sub DateienLesen()
 Dim sPfade() As String, iPfade As Integer, sDatei As String, Data As String, sArr() As String, sTeil() As String
 Dim sZeile As String, iZeile As Long, i As Integer, j As Integer, T As String
'Hier die Pfade vorgeben
 sPfade = Split("T:\Daten\2019\München\Datenkabel,P:\Daten\2018\Berlin\Datenkabel,S:\Kundendaten\2019\Hamburg\Datenkabel", ",")
 For iPfade = 0 To UBound(sPfade)
  sDatei = Dir$(sPfade(iPfade) & "\*.cfg")
  Do While sDatei <> ""
'Text-Datei öffnen
    Close #1: Open sPfade(0) & "\" & sDatei For Binary As #1
    Data = Space(LOF(1)): Get #1, , Data
    sArr = Split(Data, vbCrLf): Data = ""
    Close #1: Open sPfade(0) & "\" & sDatei For Output As #1
    For iZeile = 0 To UBound(sArr)
      If InStr(sArr(iZeile), "$") > 0 Then
        sArr(iZeile) = Replace(Replace(sArr(iZeile), "}", ""), "{", "")
        sTeil = Split(sArr(iZeile), "$")
        For i = 1 To UBound(sTeil)
          T = sTeil(i): sTeil(i) = "{"
          For j = 1 To Len(T)
           If Asc(Mid$(T, j, 1)) < 48 Then sTeil(i) = sTeil(i) & "}"
           sTeil(i) = sTeil(i) & Mid$(T, j, 1)
          Next j
          If InStr(sTeil(i), "}") = 0 Then sTeil(i) = sTeil(i) & "}"
        Next i
        sArr(iZeile) = Join$(sTeil, "$")
      End If
      Print #1, sArr(iZeile)
    Next iZeile
'Text-Datei schließen
    Close #1
'Nächste Datei
    sDatei = Dir$
  Loop
 'Nächster Pfad
 Next iPfade
 MsgBox "Fertig"
End Sub

viele Grüße
Karl-Heinz


Anzeige
AW: Bestimmte Zeichen in Datei hinzufügen?
02.12.2019 00:47:39
Sergej
Hallo Karl-Heinz,
zunächst herzlichen Dank für rasche Antwort.
Ich habe es getestet. Es wurden leeren Dateien (0 KB) angelegt. Diese liegen alle gesammelt unter T:\Daten\2019\München\Datenkabel
LG,
Sergej
AW: Bestimmte Zeichen in Datei hinzufügen?
02.12.2019 08:36:02
volti
Hallo Sergej,
hier noch ein Versuch, getestet an einer von mir probeweise erstellten Datei.
Sub DateienLesen()
 Dim sPfade() As String, iPfade As Integer, sDatei As String, Data As String, sArr() As String, sTeil() As String
 Dim sZeile As String, iZeile As Long, i As Integer, j As Integer, T As String
'Hier die Pfade vorgeben
 sPfade = Split("T:\Daten\2019\München\Datenkabel,P:\Daten\2018\Berlin\Datenkabel,S:\Kundendaten\2019\Hamburg\Datenkabel", ",")
 For iPfade = 0 To UBound(sPfade)
  sDatei = Dir$(sPfade(iPfade) & "\*.cfg")
  Do While sDatei <> ""
'Text-Datei öffnen
    Close #1: Open sPfade(iPfade) & "\" & sDatei For Binary As #1
    Data = Space(LOF(1)): Get #1, , Data
    sArr = Split(Data, vbCrLf): Data = ""
    Close #1: Open sPfade(iPfade) & "\" & sDatei For Output As #1
    For iZeile = 0 To UBound(sArr)
      If InStr(sArr(iZeile), "$") > 0 Then
        sArr(iZeile) = Replace(Replace(sArr(iZeile), "}", ""), "{", "")
        sTeil = Split(sArr(iZeile), "$")
        For i = 1 To UBound(sTeil)
          T = sTeil(i): sTeil(i) = "{"
          For j = 1 To Len(T)
           If Asc(Mid$(T, j, 1)) < 48 Then sTeil(i) = sTeil(i) & "}"
           sTeil(i) = sTeil(i) & Mid$(T, j, 1)
          Next j
          If InStr(sTeil(i), "}") = 0 Then sTeil(i) = sTeil(i) & "}"
        Next i
        sArr(iZeile) = Join$(sTeil, "$")
      End If
      Print #1, sArr(iZeile)
    Next iZeile
'Text-Datei schließen
    Close #1
'Nächste Datei
    sDatei = Dir$
  Loop
 'Nächster Pfad
 Next iPfade
 MsgBox "Fertig"
End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Bestimmte Zeichen in Datei hinzufügen?
02.12.2019 09:14:23
Sergej
Einen wunderschönen Guten Morgen Karl-Heinz,
ich habe es getestet. Fast perfekt. ;-)
Anbei ein paar Beispiele, wo eine oder andere Klammern zu viel sind:

DN$d1 -> Cu$d2		==>	DN${d1} }->} Cu${d2}
_${ISOLATION} (${ISOL_D}mm)		==>	_${ISOLATION} }(${ISOL_Dmm})
$l - $h - $b		==>	${l} }-} ${h} }-} ${b}
DN$d1 -> DN$d2		==>	DN${d1} }->} DN${d2}
${ISOL_BEZ} (${ISOL_D}mm)		==>	${ISOL_BEZ} }(${ISOL_Dmm})
$DA1 x $s		==>	${DA1} x} ${s}
Beste Grüße,
Sergej
Anzeige
AW: Bestimmte Zeichen in Datei hinzufügen?
02.12.2019 10:05:13
volti
Hallo Sergej,
hoffe, dass jetzt alle Eventualitäten abgedeckt sind:
Sub DateienLesen()
 Dim sPfade() As String, iPfade As Integer, sDatei As String, Data As String, sArr() As String, sTeil() As String
 Dim sZeile As String, iZeile As Long, i As Integer, j As Integer, T As String
'Hier die Pfade vorgeben
 sPfade = Split("T:\Daten\2019\München\Datenkabel,P:\Daten\2018\Berlin\Datenkabel,S:\Kundendaten\2019\Hamburg\Datenkabel", ",")
 For iPfade = 0 To UBound(sPfade)
  sDatei = Dir$(sPfade(iPfade) & "\*.cfg")
  Do While sDatei <> ""
'Text-Datei öffnen
    Close #1: Open sPfade(iPfade) & "\" & sDatei For Binary As #1
    Data = Space(LOF(1)): Get #1, , Data
    sArr = Split(Data, vbCrLf): Data = ""
    Close #1: Open sPfade(iPfade) & "\" & sDatei For Output As #1
    For iZeile = 0 To UBound(sArr)
      If InStr(sArr(iZeile), "$") > 0 Then
        sArr(iZeile) = Replace(Replace(sArr(iZeile), "}", ""), "{", "")
        sTeil = Split(sArr(iZeile), "$")
        For i = 1 To UBound(sTeil)
          T = sTeil(i): sTeil(i) = "{"
          For j = 1 To Len(T)
           If Asc(Mid$(T, j, 1)) < 48 Or (Asc(Mid$(T, j, 1)) > 57 And Asc(Mid$(T, j, 1)) < 65) Then
              sTeil(i) = sTeil(i) & "}" & Mid$(T, j)
              Exit For
           End If
           sTeil(i) = sTeil(i) & Mid$(T, j, 1)
          Next j
          If InStr(sTeil(i), "}") = 0 Then sTeil(i) = sTeil(i) & "}"
        Next i
        sArr(iZeile) = Join$(sTeil, "$")
      End If
      Print #1, sArr(iZeile)
    Next iZeile
'Text-Datei schließen
    Close #1
'Nächste Datei
    sDatei = Dir$
  Loop
 'Nächster Pfad
 Next iPfade
 MsgBox "Fertig"
End Sub

viele Grüße
Karl-Heinz


Anzeige
AW: Bestimmte Zeichen in Datei hinzufügen?
02.12.2019 21:40:33
Sergej
Hallo Karl-Heiz,
ich habe jetzt ein bißchen länger gebraucht, um die Dateien nach der Änderung zu überprüfen.
Bis auf folgenden beiden Zeilen hat es perfekt funktioniert. Herzlichen Dank!
Diese sollten nicht geändert werden. Ich kann es auch manuell nachtragen. :-)
_${ISOLATION} (${ISOL_D}mm)	_${ISOLATION} (${ISOL_Dmm})
${MEDK}gitter			${MEDKgitter}
Beste Grüße,
Sergej
AW: Bestimmte Zeichen in Datei hinzufügen?
03.12.2019 19:48:27
volti
Hi Sergej,
vielen Dank für die Rückmeldung.
Es ist halt ein bisschen schwierig, wenn man sich selbst nicht die Anforderung gestellt hat und keine kompletten Daten zum Testen der Ergebnisse hat.
Hier war ich davon ausgegangen, vorhandene {} erst mal rauszumachen und dann nach einer bestimmten Logik,
{ nach $ und } wenn Wort endet (kein Buchstabe, keine Zahl).
Dein Wunsch ginge natürlich auch, ist aber m.E. etwas umfangreicher in der Umsetzung.
viele Grüße
Karl-Heinz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige