Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

brauche spezielle hilfe...

Betrifft: brauche spezielle hilfe... von: Daniel
Geschrieben am: 11.08.2004 22:04:33

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

  


Betrifft: AW: brauche spezielle hilfe... von: Ramses
Geschrieben am: 11.08.2004 22:18:11

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


  


Betrifft: AW: brauche spezielle hilfe... von: daniel
Geschrieben am: 11.08.2004 22:40:31

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


  


Betrifft: AW: brauche spezielle hilfe... von: Ramses
Geschrieben am: 11.08.2004 22:57:35

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


  


Betrifft: AW: brauche spezielle hilfe... von: daniel
Geschrieben am: 11.08.2004 23:11:15

vielen dank für deine mühe rainer, aber in meinen links kommen leider auch mal mehr als 2 bindestriche vor :(


  


Betrifft: Letzter Versuch von: Ramses
Geschrieben am: 11.08.2004 23:27:20

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


  


Betrifft: AW: Letzter Versuch von: daniel
Geschrieben am: 11.08.2004 23:37:54

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!


  


Betrifft: AW: Letzter Versuch von: Ramses
Geschrieben am: 11.08.2004 23:48:40

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