Microsoft Excel

Excel und VBA: Beitrag aus Herbers Excel-Forumsarchiv

String erweitern

Betrifft: String erweitern
von: SusanneNr.1000
Geschrieben am: 14.08.2005 15:11:58

Hallo,
ich habe mal wieder ein Problem und hoffe, dass mir hier im Forum geholfen werden kann!
Ich habe ein Makro, das Internetadressen per Knopfdruck aus der Zwischenablage ausliest und dann in veränderter Form in eine vorgegebene Zelle schreibt, z.B. in der Form "google.de". Das hat auch soweit sehr gut funktioniert. Das Problem ist nur, dass ich nun auch immer häufiger Internetadressen nicht in der Form "http://.../..., sondern nur in der Form www...../... vorliegen habe (also ohne "http://" und dies dann jedesmal eine Fehlermeldung produziert hat. Darum habe ich mir überlegt, dass ich vorweg eine Abfrage des Strings in der Zwischenablage schalten wollte, der prüft ob http:// vorhanden ist und wenn nicht den String vor der Weiterverarbeitung so verändert, dass ein http;// vornedrangehängt wird. Irgendwas muss ich aber falsch gemacht haben, da auch das immer zu einer Fehlermeldung führt. Ich schreibe euch mal meinen Code auf und würde mich sehr freuen, wenn mir jemand helfen könnte!

Sub LinkBearbeiten()

Dim strAddresse$
Dim strErgebnis$
Dim oData As DataObject

Set oData = New DataObject
  oData.GetFromClipboard
  On Error Resume Next

strAddresse = oData.GetText
Fehler = Err.Number
  strFehler = Err.Description
  On Error GoTo 0
  Select Case Fehler
    Case 0 'Alles paletti
    Case -2147221404 'Format kann nicht interpretiert werden
      MsgBox "Ungültiges Format!", vbExclamation
    Case Else 'Ein unbekannter Fehler ist aufgetreten
      MsgBox Fehler & vbCr & strFehler, vbExclamation
  End Select

strErgebnis = Replace(Split(strAddresse, "/", -1, 0)(2), "www.", "", 1, -1, 1)
ActiveCell.Value = strErgebnis
Call DatumeineZelleweiterlinks
End Sub


Vielen Dank im Voraus und Liebe Grüße
Susanne
  


Betrifft: AW: String erweitern
von: Matthias G
Geschrieben am: 14.08.2005 15:41:51

Hallo Susanne,

so hängst du bei Bedarf das http:// vor den String:

If LCase(Left(strAddresse, 7)) <> "http://" Then
strAddresse = "http://" & strAddresse
End If

Gruß Matthias


  


Betrifft: AW: String erweitern
von: Ralf Anton
Geschrieben am: 14.08.2005 15:55:54

Hallo Susanne,

damit sollte es funktionieren:

Sub LinkBearbeiten()

Dim strAddresse$, strErgebnis$, oData As DataObject, l%
On Error Resume Next

Set oData = New DataObject
  oData.GetFromClipboard

strAddresse = oData.GetText
l = InStr(1, strAddresse, ".de")

    If Left(strAddresse, 4) = "http" Then
        strErgebnis = Left(strAddresse, l + 2)
        strErgebnis = Mid(strErgebnis, 12)
    Else
        strErgebnis = Mid(strAddresse, 5, l - 2)
    End If
    
ActiveCell.Value = strErgebnis
'Call DatumeineZelleweiterlinks
End Sub


Ciao, Ralf


  


Betrifft: AW:String erweitern
von: SusanneNr.1000
Geschrieben am: 14.08.2005 16:58:16

Hallo und vielen Dank für eure Lösungsvorschläge!
Leider funktionieren beide noch nicht richtig (diese Ansätze hatte ich so ungefähr auch schon ausprobiert). Bei der Lösung von Ralf funktioniert es wie gehabt, wenn der Link vollständig mit http:// ist und ansonsten wird nichts in die Zelle geschrieben und bei der Lösung von Matthias erhalte ich die Fehlermeldung "Index außerhalb des gültigen Bereichs" .... Habt ihr eine Idee woran das liegen könnte?


  


Betrifft: AW:String erweitern
von: SusanneNr.1000
Geschrieben am: 14.08.2005 17:36:38

Hallo,

Kommando zurück, es war wieder mal meine eigene Schusseligkeit und die Lösung von Matthias stimmt natürlich wieder einmal. Ich habe nur durch das viele rumprobieren einen Namen geändert und dadurch den Laufzeitfehler erhalten! Vielen Dank nocheinmal für eure Hilfe!

Liebe Grüße Susanne


  


Betrifft: AW: AW:String erweitern
von: Matthias G
Geschrieben am: 14.08.2005 17:48:48

Hallo Susanne,

freut mich für dich, dass es nun klappt :-)

Was anderes: Wie bist du denn auf die Split()-Funktion gekommen?
Ich habe mit in einer Tabelle, die Datensätze in einer Zelle speichern soll, mühsam eigene Routinen geschrieben, und nun finde ich zufällig hier die Split()- und damit auch die Join()-Funktion...

Wenn ich das mal eher gewusst hätte!

Gruß Matthias


  


Betrifft: AW: AW:String erweitern
von: SusanneNr.1000
Geschrieben am: 14.08.2005 17:57:34

Hallo Matthias,

ich gebe zu das die Idee nicht auf meinem Mist gewachsen ist... Ich habe den Tip auch aus einem Forum bekommen ...

Liebe Grüße Susanne