Laufzeitfehler 91
17.01.2017 16:47:12
Katjuscha
habe mir folgendes Makro zusammen geschustert.
Habe jetzt allerdings diese Fehlermeldung mit der ich nicht klar komme.
Option Explicit
Public strPathAlt() As String
Public strPathNeu() As String
Sub HyperlinksÄndern()
Dim WB As Workbook
Dim lngLetzteZeile As Long
Dim lngZeile As Long
'in Lokalitäten die Daten in 2 Felder einlesen
With WB("G:\FF-Listen\HL_Gemarkungen.xls")
lngLetzteZeile = .Cells(Rows.Count, 1).End(xlUp).Row
ReDim strPathAlt(lngLetzteZeile)
ReDim strPathNeu(lngLetzteZeile)
For lngZeile = 2 To lngLetzteZeile
DoEvents
strPathAlt(lngZeile) = .Cells(lngZeile, 1)
strPathNeu(lngZeile) = .Cells(lngZeile, 2)
Next lngZeile
End With
End Sub
Sub ErsetzeAlleHyperlink()
Dim alterPfad As String
Dim neuerPfad As String
Dim strHyperLink As String
Dim HL As Hyperlink
ActiveWorkbook.BuiltinDocumentProperties("Hyperlink base") = ""
' durch alle Hyperlinks im Blatt laufen, Blattname muss angepasst werden
For Each HL In ActiveSheet.Hyperlinks
' und in der Adresse des Links den Teil alt gegen neu tauschen
strHyperLink = Replace(strHyperLink, "\\hpgue06\G-Archiv\Riss-Archiv\", "")
strHyperLink = Replace(strHyperLink, "/", "\")
strHyperLink = Replace(strHyperLink, "Risse\", "")
strHyperLink = Replace(strHyperLink, "Koordinaten\", "")
strHyperLink = Replace(strHyperLink, "Grenzniederschriften\", "")
Next
For Each HL In ActiveSheet.Hyperlinks
DoEvents
strHyperLink = HL.Address
'If hyper.Parent.Interior.ColorIndex = 3 Then
'Wenn im Hyperlink der alte Pfad...
If InStr(strHyperLink, alterPfad) 0 Then
'...dann mit dem neuen Pfad ersetzen
strHyperLink = Replace(strHyperLink, alterPfad, neuerPfad)
'Mit obiger Sub testen ob neuer Hyperlink iO
'Call Hyperlinks_testen
End If
'Gemäss Tabelle ersetzen...
For I = intStart To intEnde
DoEvents
If InStr(strHyperLink, strPathAlt(I)) 0 Then
'...dann mit dem neuen Pfad ersetzen
strHyperLink = Replace(strHyperLink, strPathAlt(I), strPathNeu(I))
End If
Next I
Next
ActiveWorkbook.BuiltinDocumentProperties("Hyperlink base") = "\\fs02.local\Archiv62\ _
Zahlenwerk\Nachweise\"
Call HyperlinkTest
End Sub
In der Zeile:
With WB("G:\FF-Listen\HL_Gemarkungen.xls")
erhalte ich die Fehlermeldung Laufzeitfehler '91: Objektvariable oder With-Blockvariable nicht festgelegt!
Was soll ich damit anfangen?
Zur Erklärung was dieses Makro bewirken soll:
Ich habe 1400 Excel-Dateien,die mit massenhaft Hyperlinks versehen sind.
Jetzt hat sich der Ablageort der verlinkten Dateien geändert.
Einigen Teile des Hyperlink-Pfades kann ich generell problemlos löschen.
Jetzt kommt aber der schwierige Teil: einen Teil des Pfade muss ich abgleichen nach dem Prinzip enthält der Pfad das,dann ersetze durch dieses. Dafür habe ich eine zusätzliche Excel-Datei mit Spalte alt und Spalte neu.
Natürlich könnte ich auch 600 weitere Zeilen nach dem Prinzip:
strHyperLink = Replace(strHyperLink, "/", "\")
einfügen,aber ich dachte das geht bestimmt auch anders. Nur Wie?Habe nicht wirklich Ahnung von VBA ist alles nur zusammengesucht.
Kann man das ganze vielleicht auch in einer Prozedur durchführen oder geht das nur so.
Bitte helft mir.
Gruß Katjuscha