Excel-Guru gesucht. Hyperlinks ändern

DD8ED

Vereinsmitglied
Hallo,
ich habe ein Problem mit Excel.
In einem Sheet gibt es zahlreiche Links im Format:
https://../../../filename
Ich möchte den Pfad ersetzen durch:
\Texte\filename
und das möglichst automatisch im ganzen Sheet. Das sind viele Links.
Der Filename soll erhalten bleiben.

Ich habe zwar im Netz etwas Code dazu gefunden, nur funktioniert hat es nicht. Mein Wissen zu VB oder Makros ist allerdngs ungefähr bei Null.
Hat jemand eine Idee?
 
Ich vergass:
Version ist aktuelle Office 365 Version
 
Idee, nur exemplarisch mit LibreOffice durchgespielt:

1. Die Datei o. nur die Spalte als *.csv-Datei exportieren. Bei den Optionen der *.csv-Datei "Formeln statt Werte" aktivieren
2. *.csv-Datei im Texteditior öffnen und mittels Suche-Ersetze den Pfad anpassen.
3. *.csv-Datei/Spalte im Excel importieren.
4. LibreOffice bietete Hyperlink-Formel, um URL wieder in Link zumzuwandeln. Excel bestimmt auch...

LibreOffice kann auch die URL innerhalb eines Links mittels Suche-Ersetze behandeln. Anschliesslich bleibt in der Zelle nur die URL zurueck. Muesste man also danach auch mit der Hyperlink-Formel ran. Vielleicht also kurz LibreOffice installieren :)
 
Hallo Frank,

ich habe da mal etwas für dich (VBA) zusammen geschrieben. Bisher habe ich im Excel noch nie etwas mit Hyperlinks gemacht, darum war ich neugierig...
Es ist auf die schnelle runter geschrieben. Normalerweise gehört da noch eine Überprüfung rein, ob es unter den neuen Link überhaut eine Datei, oder mindestens ob es den Pfad gibt. Aber für den ersten Test sollte es reichen...

Wenn noch nicht geschehen, dann aktiviere das Ribbon-Menü "Entwicklertools" und starte den VBA-Editor (Visual Basic). Für dich spielt es erst einmal keine Rolle, ob du den Code in die Datei selbst (hasse ich), oder in eine zentrale Quellcode-Bibliothek ablegst. Wenn er im Editor zu sehen ist, den Cursor darein positionieren und den "Play" Button klicken...


Sub Hyperlink_verändern()
Dim i As Integer
Dim n As Integer
Dim t As String
Dim Dateiname As String
Dim Pfad_alt As String
Dim Pfad_neu As String
Dim Hyperlink As Excel.Hyperlink
Dim XLS_Sheet As Excel.Worksheet


Set XLS_Sheet = Excel.ActiveSheet

t = "C:\Daten"
Pfad_neu = VBA.InputBox("Wie soll der neue Pfad der Hyperlinks lauten?", "", t)
If VBA.Len(Pfad_neu) = 0 Then GoTo Abbruch
If VBA.StrComp(VBA.Right(Pfad_neu, 1), "", vbTextCompare) <> 0 Then Pfad_neu = Pfad_neu & ""


If MsgBox("Es sind " & XLS_Sheet.Hyperlinks.Count & " Hyperlinks in diesem Sheet." & vbCr & vbCr & _
"Sollen die alle auf den Pfad: " & vbCr & _
Pfad_neu & vbCr & _
"geändert werden?", vbQuestion + vbYesNo, "Hyperlink_verändern") = vbNo Then GoTo Abbruch

t = VBA.vbNullString
For i = 1 To XLS_Sheet.Hyperlinks.Count
Set Hyperlink = XLS_Sheet.Hyperlinks(i)

'alten Link zerlegen
t = Hyperlink.Address
n = InStrRev(t, "/")
If n > 0 Then
'nur ändern, wenn es auch ein "Web-Link" ist
Pfad_alt = VBA.Left(t, n)
Dateiname = VBA.Mid(t, n + 1)

'neuen Link zusammen bauen
Hyperlink.Address = Pfad_neu & Dateiname

'wenn die Anzeige in Excel auch noch "aktuell" sein soll, dann...
Hyperlink.TextToDisplay = Pfad_neu & Dateiname
End If
Next i


Abbruch:
Set Hyperlink = Nothing
Set XLS_Sheet = Nothing
End Sub





Viele Grüße
Mirko
 
Mal zusammen "gefrickelt"...


Die URL steht in B4.

Code:
=("Pfad zur Datei")&(TEIL(B4;VERWEIS(256;FINDEN("/";B4;ZEILE($1:$128)))+1;99))
 
Hallo Frank,

ich habe da mal etwas für dich (VBA) zusammen geschrieben. Bisher habe ich im Excel noch nie etwas mit Hyperlinks gemacht, darum war ich neugierig...
Es ist auf die schnelle runter geschrieben. Normalerweise gehört da noch eine Überprüfung rein, ob es unter den neuen Link überhaut eine Datei, oder mindestens ob es den Pfad gibt. Aber für den ersten Test sollte es reichen...

Wenn noch nicht geschehen, dann aktiviere das Ribbon-Menü "Entwicklertools" und starte den VBA-Editor (Visual Basic). Für dich spielt es erst einmal keine Rolle, ob du den Code in die Datei selbst (hasse ich), oder in eine zentrale Quellcode-Bibliothek ablegst. Wenn er im Editor zu sehen ist, den Cursor darein positionieren und den "Play" Button klicken...



Viele Grüße
Mirko
Ganz Herzlichen Dank.
Hat geklappt
 
Excel

Excel

Bin mehr aus Neugierde hier mal rein, ich dachte ich kann auch a bissi Excel, aber wenn ich dann lese, hab mal schnell runtergeschrieben.....
Kann ich es wohl net...Respekt an alle die geholfen haben
Gut zu wissen, hier im Forum werden Sie geholfen...
Grüße
 
Hyperlink.TextToDisplay = Pfad_neu & Dateiname
Hallo Mirco, noch mal herzlichen Dank.

Eine Frage noch:
Setzt der oben zitierte Text den sichtbaren Inhalt der Zelle?
Ich hatte noch das Problem, das in den jeweiligen Zellen sichtbar der gesamte Pfad stand.
War jetzt aber kein Problem, da ich an den sichtbaren Inhalten selber von aussen rumfummeln kann.
Mach ich über Agilent VEE (kennt wohl keiner :D).
Ich komm damit nur ums Verrecken nicht an die hinterlegten Links. Das war mein Problem.
 
Hallo Frank,

Korrekt!
Was bitte ist: Agilent VEE ?

Ein "Schönheitsfehler" ist mir oben passiert.
If VBA.StrComp(VBA.Right(Pfad_neu, 1), "", vbTextCompare) <> 0 Then Pfad_neu = Pfad_neu & ""

Wenn in die InputBox ein Pfad ohne abschließenden "" eingegeben wird, soll es automatisch angehängt werden. Er hägt mit diesem Fehler aber "nichts" an. :)

Viele Grüße
Mirko

Edit: OK, das ist gemein. Das Forum frisst hier die Backslash-Zeichen. In die "" gehört jeweils eines rein... Also kein Schönheitsfehler, das ist gemein.
 
Hallo Frank,

Korrekt!
Was bitte ist: Agilent VEE ?


Mirko

Edit: OK, das ist gemein. Das Forum frisst hier die Backslash-Zeichen. In die "" gehört jeweils eines rein... Also kein Schönheitsfehler, das ist gemein.

Hallo,
VEE ist eine zugegebenrmassen etwas exotische Programmiersprache. Hauptsächlich zur Automatisierung von Messungen.
 
Hallo Frank,

mit dem Thema Messdaten habe ich auch ein wenig zu tun. Allerdings ziehe ich alle meine Sensor-Logs direkt ins AutoCAD...

Viele Grüße
Mirko
 
Ansicht hell / dunkel umschalten
Oben Unten