Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
468to472
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
468to472
468to472
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

brauche spezielle hilfe...

brauche spezielle hilfe...
11.08.2004 22:04:33
Daniel
hi,
ich habe folgendes problem: ich habe eine txt datei mit dem html-quellcode einer linkliste. eine zeile sieht z.b. so aus:
asien-toplink
ich möchte nun im textlink den bindestrich rausnehmen, in der linkadresse soll der bindestrich aber bleiben. das ergebnis soll also soaussehen:
asien toplink
da diese linkliste sehr gross ist, möchte ich dies mit einem tool oder mit excel machen. kann mir da jemand weiterhelfen? mit ein wenig kreativität sollte sowas mit excel möglich sein, oder?
gruss
dan

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

Betreff
Datum
Anwender
Anzeige
AW: brauche spezielle hilfe...
Ramses
Hallo
verzeih wenn ich mich doof anstelle,.... aber "Suchen" und "Ersetzen" im Editor würde/müsste/sollte doch auch gehen ?
Suche Bindestrich, ersetze duch Leerzeichen
Gruss Rainer
AW: brauche spezielle hilfe...
11.08.2004 22:40:31
daniel
nein, mit suchen und ersetzen gehtdas natürlich nicht. ich habe vorhin bei meinem posting den vollständigen quellcode der 2 links hingeschrieben, leider hat dieses forum hier daraus 2 links gemacht.
ich kann es auch mit anderen zeichen schreiben: folgendes:
"asien-toplinks.de:asien-toplinks"
soll in "asien-toplinks.de:asien toplinks" umgewandelt werden.
mit suchen und ersetzen geht das nicht, weil sich in einer zeile jeweils zwei bindestriche befinden, aber nur einer soll in ein leerzeichen umgewandelt werden...
gruss
dan
Anzeige
AW: brauche spezielle hilfe...
Ramses
Hallo
probier mal das aus:

Sub Read_Extern_File_and_Replace_Signs()
'(C) Ramses
Dim i As Long, n As Integer, findLast As Boolean
'Hilfsvariable für Anzahl Datensätze
Dim Text1 As String
'Variablen für den Array nötig
Dim txtlines As Long
'Für Office97 muss das Array TextArr als String definiert werden
'Entdeckt duch Gerd Z aus dem Herber Forum
Dim textArr As Variant
Dim ReadFile As String, tempStr As String
'Name der Datei in der die Semikola ersetzt werden sollen
ReadFile = "C:\Demo.htm"
findLast = False
Close #1
'1. Öffnen der Datei
'Den Namen und Pfad bitte anpassen
Open ReadFile For Input As #1
'Die anzahl ist nötig um die Grösse des Arrays zu deklarieren
'Zähler auf 0 setzen
txtlines = 0
Do While Not EOF(1)    ' Schleife bis Dateiende.
Input #1, Text1    ' Hilfsvariable zum einlesen verwenden
'Zähler hochzählen
txtlines = txtlines + 1
Loop
'Schliessen der Datei weil Dateiende erreicht wurde
Close #1
'Erneutes Öffnen um zum Dateianfang zu kommen
Open ReadFile For Input As #1    ' Datei zum Einlesen öffnen.
'Array neu auf die Anzahl der Linien initialisieren
ReDim textArr(txtlines)
'Einlesen der Dateien in das Array
For i = 1 To txtlines
'Zeile einlesen
Line Input #1, textArr(i)
'temporär übergeben
tempStr = textArr(i)
'Schleife um zu ersetzende Zeichen im String zu suchen
For n = 1 To Len(tempStr)
'zuerst wird das Komma gegen ein Semikolon ersetzt
If Mid(tempStr, n, 1) = "-" Then
If findLast = False Then
findLast = True
Else
tempStr = Application.WorksheetFunction.Replace(tempStr, n, 1, " ")
findLast = False
Exit For
End If
Next n
findLast = False
'Der korrigierte String wird wieder in das array zurückgeschrieben
textArr(i) = tempStr
Next i
'File schliessen
Close #1
'File zum schreiben wieder öffnen
Open ReadFile For Output As #1
For i = 1 To txtlines
'Array an die jeweilige Zeile zurückschreiben
Print #1, textArr(i)
Next i
'Schliessen
Close #1
MsgBox "Alle ""-""-Zeichen sollten ersetzt sein :-))"
End Sub

Das funktioniert aber NUR, wenn wirklich nur 2 Bindestriche vorkommen.
Eine Sicherungsdatei also auf jeden Fall mal anlegen
Gruss Rainer
Anzeige
AW: brauche spezielle hilfe...
11.08.2004 23:11:15
daniel
vielen dank für deine mühe rainer, aber in meinen links kommen leider auch mal mehr als 2 bindestriche vor :(
Letzter Versuch
Ramses
Hallo
In dieser Variante wird der Bindestrich nach dem Doppelpunkt ersetzt

Sub Read_Extern_File_and_Replace_Signs()
'(C) Ramses
Dim i As Long, n As Integer, findFirst As Boolean
'Hilfsvariable für Anzahl Datensätze
Dim Text1 As String
'Variablen für den Array nötig
Dim txtlines As Long
'Für Office97 muss das Array TextArr als String definiert werden
'Entdeckt duch Gerd Z aus dem Herber Forum
Dim textArr As Variant
Dim ReadFile As String, tempStr As String
'Name der Datei in der die Semikola ersetzt werden sollen
ReadFile = "C:\Demo.htm"
findFirst = False
findLast = False
Close #1
'1. Öffnen der Datei
'Den Namen und Pfad bitte anpassen
Open ReadFile For Input As #1
'Die anzahl ist nötig um die Grösse des Arrays zu deklarieren
'Zähler auf 0 setzen
txtlines = 0
Do While Not EOF(1)    ' Schleife bis Dateiende.
Input #1, Text1    ' Hilfsvariable zum einlesen verwenden
'Zähler hochzählen
txtlines = txtlines + 1
Loop
'Schliessen der Datei weil Dateiende erreicht wurde
Close #1
'Erneutes Öffnen um zum Dateianfang zu kommen
Open ReadFile For Input As #1    ' Datei zum Einlesen öffnen.
'Array neu auf die Anzahl der Linien initialisieren
ReDim textArr(txtlines)
'Einlesen der Dateien in das Array
For i = 1 To txtlines
'Zeile einlesen
Line Input #1, textArr(i)
'temporär übergeben
tempStr = textArr(i)
'Schleife um zu ersetzende Zeichen im String zu suchen
For n = 1 To Len(tempStr)
'zuerst wird der Doppelpunkt identifiziert
If Mid(tempStr, n, 1) = ":" Then
If findFirst = False Then
findFirst = True
End If
'Wenn der Doppelpunkt gefunden wurde
'dann wird der Bindestrich nach dem Doppelpunkt ersetzt
ElseIf Mid(tempStr, n, 1) = "-" Then
If findFirst = True Then
tempStr = Application.WorksheetFunction.Replace(tempStr, n, 1, " ")
findFirst = False
Exit For
End If
End If
Next n
findFirst = False
'Der korrigierte String wird wieder in das array zurückgeschrieben
textArr(i) = tempStr
Next i
'File schliessen
Close #1
'File zum schreiben wieder öffnen
Open ReadFile For Output As #1
For i = 1 To txtlines
'Array an die jeweilige Zeile zurückschreiben
Print #1, textArr(i)
Next i
'Schliessen
Close #1
MsgBox "Alle ""-""-Zeichen sollten ersetzt sein :-))"
End Sub

Sollten auch noch mehr Doppelpunkte vorhanden sein, steige ich aus.
Ohne vernünftige Struktur ist da nix zu machen.
Gruss Rainer
Anzeige
AW: Letzter Versuch
11.08.2004 23:37:54
daniel
das hört sich interessant an, damit sollte es klappen. aber eine frage habe ich noch: wie und wo kann ich diesen code in excel einfügen? habe von VBA nicht viel ahnung... habe schon alle menüfenster angeklickt, kann aber nix finden.
vielen dank schonmal für deinen code!
AW: Letzter Versuch
Ramses
Hallo
Extras - Makro - Visual Basic Editor
oder
"Alt"+"F11"
Im projektexplorer rechte Maustaste auf "Diese Arbeitsmappe" unter dem VBA_Projekt mit dem Namen deiner Mappe.
Aus dem Kontextmenü "Einfügen - Modul" wählen
Dort den Code reinkopieren
Den Pfad zur Datei und den Namen der Datei anpassen !!
Den Code kannst du mit "F8" starten
Gruss Rainer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige