Ändern einer großen Anzahl von Hyperlinks (Microsoft Excel)
Wendy hat ein einziges Excel-Arbeitsblatt, das über 1.200 Hyperlinks zu TIFF-Dateien enthält. (Dies sind Hyperlinks, keine regulären Links.) Excel hatte Probleme und musste heruntergefahren werden. Emily verwendete die automatisch gespeicherten Dateien, um die zuvor gespeicherte Datei wiederherzustellen. Jetzt funktionieren alle zuvor funktionierenden Hyperlinks nicht mehr. Sie hatte die Hyperlinks zu den Bildern auf einem freigegebenen Netzlaufwerk, aber AutoSave änderte die Hyperlinks, um auf das Laufwerk C: zu verweisen. Sie fragt sich, ob es eine einfache Möglichkeit gibt, sie wieder auf dem freigegebenen Netzlaufwerk zu reparieren.
Auf den ersten Blick scheint es so, als könnten Sie die reguläre Funktion zum Suchen und Ersetzen von Excel verwenden, um die Festplattenbezeichnung zu finden (wie in Datei: // c 🙂 und durch ein Netzwerklaufwerk zu ersetzen (wie in Datei: // shareddrive). Das Problem ist, dass dieser Ansatz nur einen Teil des Problems behebt – er ändert nur den angezeigten Teil des Hyperlinks, nicht den zugrunde liegenden Hyperlink selbst. Der einzige Weg, um zum Hyperlink selbst zu gelangen, ist die Verwendung eines Makros.
Angenommen, alle zu ändernden Hyperlinks befinden sich im selben Arbeitsblatt, können Sie das folgende Makro verwenden:
Sub FixHyperlinks1() Dim wks As Worksheet Dim hl As Hyperlink Dim sOld As String Dim sNew As String Set wks = ActiveSheet sOld = "c:\" sNew = "S:\Network\" For Each hl In wks.Hyperlinks hl.Address = Replace(hl.Address, sOld, sNew) Next hl End Sub
Sie müssen lediglich die Werte ändern, die den Variablen sOld und sNew zugewiesen sind. Wenn beim Versuch, das Makro auszuführen, eine Fehlermeldung angezeigt wird – ein Fehler in der Zeile mit der Ersetzungsfunktion -, liegt dies daran, dass die Ersetzungsfunktion nicht in allen Excel-Versionen verfügbar ist. In diesem Fall sollten Sie stattdessen das folgende Makro verwenden:
Sub FixHyperlinks2() Dim wks As Worksheet Dim hl As Hyperlink Dim sOld As String Dim sNew As String Set wks = ActiveSheet sOld = "c:\" sNew = "S:\Network\" For Each hl In wks.Hyperlinks hl.Address = Application.WorksheetFunction. _ Substitute(hl.Address, sOld, sNew) Next hl End Sub
Beachten Sie, dass der einzige Unterschied in der Verwendung der Funktion „Arbeitsblatt ersetzen“ besteht.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (8622) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: