Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Hyperlink Pfad ändern

VBA - Hyperlink Pfad ändern
Rouven
Hi,
schon das nächste Problem:
Ich möchte in einer Datei Hyperlinks ändern - der Pfad hat sich verschoben. Das klappt soweit auch einigermaßen - 4 Fragen treten auf, um es zu perfektionieren. Hier erstmal der Code:
--------------------------------

Sub Hyperlink()
Dim sHyp As Hyperlink
Dim oldAddress As String
Dim newAddress As String
'Anpassen !!!
oldAddress = "..\..\Bresser\Anwendungsdaten\"
newAddress = "N:\Customer Data\Test\"
For Each sHyp In ActiveSheet.Hyperlinks
If InStr(1, sHyp.Address, oldAddress) Then
sHyp.Address = Mid(sHyp.Address, 1, InStr(1, sHyp.Address, oldAddress) - 1) &  _
newAddress & Mid(sHyp.Address, InStr(1, sHyp.Address, oldAddress) + Len(oldAddress))
sHyp.TextToDisplay = sHyp.Address
End If
Next
End Sub

------------------------------
1 Frage:
Kann man es auch so einrichten, dass man bei oldaddress nur das ende nimmt - d.h. ich möchte eine stelle suchen und egal wie die ordnerstruktur davor aussieht soll er es durchführen. Wie z.B.
oldAddress = " *anwendungsdaten\ "
2 Frage:
Kann man das auch mit einer "wenn Abfrage" kombinieren ? soll heißen - er soll es nur so ändern, wenn z.B. ein Ordner namens "Tisch" enthalten ist - wenn er "Stuhl" heißt soll er es in dieses Format ändern ?
3 Frage:
Der Name des Hyperlinks wird umbenannt - wie und wo kann man das ändern ?
4 Frage:
Wenn eine Zeile ohne Hyperlinks dazwischen ist stoppt das Makro - was muss man machen, damit er es für eine Spalte fortlaufend durchführt ?
Viele viele Fragen - ich weiß, aber an diesem Punkt komm ich allein nicht weiter. Ist meine erste Makro-Programmierung.
Vielen Dank im Voraus
Grüße

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA - Hyperlink Pfad ändern
08.09.2012 13:32:12
Tino
Hallo,
hier mal ein Beispiel wie ich es verstanden habe.
Keine Ahnung ob ich Deine Fragen richtig verstanden habe.
Erst wird der reale Pfad ermittelt also ohne "..\...\"
Danach wird der Pfad von der Datei getrennt und jeweils in einer Variablen abgelegt.
Dann wird der rechte Bereich geprüft ob dieser oldAddress heißt.
Ist diese Bedingung erfüllt wird geprüft ob der Ordner Stuhl oder Tisch enthalten ist und
Entsprechend wird zu dem Dateinamen der Pfad für Tisch oder Stuhl angefügt.
Private Declare Function GetFullPathName Lib "kernel32.dll" Alias _
"GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, _
ByVal lpBuffer As String, ByVal lpFilePart As String) As Long


Sub Hyperlink()
Dim sHyp As Hyperlink
Dim oldAddress As String, newAddress As String
Dim newTischAddress As String, newStuhlAddress As String
Dim strFullPath$, strPath$, strFileName$

'Anpassen !!! 
oldAddress = "\Bresser\Anwendungsdaten\"
newTischAddress = "N:\Customer Data\Tisch\"
newStuhlAddress = "N:\Customer Data\Stuhl\"

For Each sHyp In ActiveSheet.Hyperlinks
    strFullPath = Space(255&)
    GetFullPathName sHyp.Address, 255&, strFullPath, vbNullString
    strFullPath = Left$(strFullPath, InStr(strFullPath, Chr(0)) - 1)
    strPath = Mid$(strFullPath, 1, InStrRev(strFullPath, "\"))
    strFileName = Right$(strFullPath, Len(strFullPath) - Len(strPath))

    If Right$(strPath, Len(oldAddress)) = oldAddress Then 'rechten Bereich mit oldAddress prüfen 
        If InStr(strPath, "\Stuhl\") > 0 Then 'wenn Ordner Stuhl 
            sHyp.Address = newStuhlAddress & strFileName
        ElseIf InStr(strPath, "\Tisch\") > 0 Then 'wenn Ordner Tisch 
            sHyp.Address = newTischAddress & strFileName
        End If
    End If

Next
End Sub
Gruß Tino

Anzeige
AW: VBA - Hyperlink Pfad ändern
10.09.2012 08:52:55
Rouven
Hi Tino,
danke für deine Mühe, aber ich bekomm das damit nicht geregelt.
Ich würde gern dann einfach meinen alten Code nehmen und dort 2 Sachen ändern:
1.) Er soll das Makro komplett für Spalte R anwenden, auch wenn dazwischen mal eine "Änderung" nicht möglich ist, wegen z.B. leerer Zelle
2.) Das ist noch das wichtigste: er soll den alten Hyperlink namen beibehalten
Vielen Dank
Grüße
Rouven

Anzeige
AW: VBA - Hyperlink Pfad ändern
10.09.2012 11:05:00
Rouven
alternativ zum "Namen beibehalten" wäre ein Befehl, den Namen aus dem Text der Spalten A (Luft), B (Gewehr) und C (Patrone) zu generieren - z.B. Luft Gewehr Patrone. (was anderes fielt mir gerade nicht ein - sorry
Der Name sollte also je mit Leerzeichen dazwischen aufgebaut sein und sich immer innerhalb der Spalte auf die Zeile beziehen, in der auch der hyperlink steht.

Anzeige
AW: VBA - Hyperlink Pfad ändern
10.09.2012 11:17:03
Rouven
wieder ich - den befehl zum namen aus 3 spalten habe ich - nur wie kann ich den bei VBA einsetzen - damit der hyperlink so formatiert wird.
=VERKETTEN(;B3; " ";C3;" ";D3)
Grüße

AW: VBA - Hyperlink Pfad ändern
13.09.2012 13:01:36
UweD
Hallo
so z.B.
Var = [B3] & " " & [C3] & " " & [D3]
Gruß UweD
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Hyperlink-Pfade in Excel mit VBA ändern


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:
    • Klicke mit der rechten Maustaste auf "VBAProject (dein Arbeitsblatt)".
    • Wähle Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:
Sub Hyperlink()
    Dim sHyp As Hyperlink
    Dim oldAddress As String
    Dim newAddress As String
    'Anpassen !!!
    oldAddress = "..\..\Bresser\Anwendungsdaten\"
    newAddress = "N:\Customer Data\Test\"

    For Each sHyp In ActiveSheet.Hyperlinks
        If InStr(1, sHyp.Address, oldAddress) Then
            sHyp.Address = Mid(sHyp.Address, 1, InStr(1, sHyp.Address, oldAddress) - 1) & _
                           newAddress & Mid(sHyp.Address, InStr(1, sHyp.Address, oldAddress) + Len(oldAddress))
            sHyp.TextToDisplay = sHyp.Address
        End If
    Next
End Sub
  1. Passe die oldAddress und newAddress Variablen an deine Bedürfnisse an.
  2. Führe das Makro aus, indem du F5 drückst oder im Menü Run > Run Sub/UserForm wählst.

Häufige Fehler und Lösungen

  • Fehler: Makro stoppt bei leeren Zellen.

    • Lösung: Verwende eine If-Bedingung, um sicherzustellen, dass das Makro nur bei Zellen mit Hyperlinks fortfährt.
  • Fehler: Hyperlink-Name wird nicht beibehalten.

    • Lösung: Du kannst den TextToDisplay des Hyperlinks direkt beim Ändern der Adresse anpassen.
sHyp.TextToDisplay = "Neuer Name" ' oder eine Verkettung von Werten aus anderen Zellen

Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, kannst du auch die Excel-Funktion „Suchen und Ersetzen“ verwenden, um Hyperlinks manuell zu ändern. Dies ist jedoch weniger effizient, wenn du viele Hyperlinks gleichzeitig ändern musst.


Praktische Beispiele

  1. Hyperlink-Pfad ändern: Um alle Hyperlinks in einer bestimmten Spalte zu ändern, kannst du den oben genannten Code modifizieren, um nur Hyperlinks in einer bestimmten Spalte (z.B. Spalte R) zu ändern.

  2. Hyperlink-Name aus Zellen erstellen: Verwende die folgende Zeile, um den Namen des Hyperlinks aus den Zellen A, B und C zu erstellen:

sHyp.TextToDisplay = Range("A" & sHyp.Parent.Row).Value & " " & Range("B" & sHyp.Parent.Row).Value & " " & Range("C" & sHyp.Parent.Row).Value

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige