Anzeige
Archiv - Navigation
1532to1536
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 91

Laufzeitfehler 91
17.01.2017 16:47:12
Katjuscha
Hallo zusammen,
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

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 91
17.01.2017 17:17:34
Mullit
Hallo,
..Dein Objekt ist falsch, wenn dann so, Tabelle müsstest Du anpassen:
With Workbooks("G:\FF-Listen\HL_Gemarkungen.xls").Worksheets(1)

Gruß, Mullit
AW: Laufzeitfehler 9
17.01.2017 17:26:53
Katjuscha
Hallo Mullit,
erst einmal Danke für deine schnelle Antwort.
Leider kommt jetzt die Fehlermeldung: Laufzeitfehler 9: Index außerhalb des gültigen Bereichs!
Und nun?
Gruß Katjuscha
AW: Laufzeitfehler 9
17.01.2017 17:39:02
Mullit
Hallo Katjuscha,
nu is Dein Workbook-Path falsch, das Workbook ist nicht vorhanden oder last but not least, es ist noch nicht geöffnet...
Gruß, Mullit
AW: Laufzeitfehler 9
17.01.2017 17:48:24
Luschi
Hallo Katjuscha,
geöffnete Excel-Dateien werden in Vba nur mit dem Dateinamen (also ohne Pfad) indiziert;
deshalb so: With Workbooks("HL_Gemarkungen.xls").Worksheets(1)
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Laufzeitfehler 9
18.01.2017 09:11:26
Katjuscha
Hallo Mullit, Hallo Luschi,
die Pfadangabe zu löschen war genau richtig. Jetzt ist die Fehlermeldung weg.
Wie kann ich jetzt vorab prüfen, ob die Datei auch wirklich offen ist und ansonsten öffnen?
Mit

Workbooks.Open ("HL_Gemarkungen.xls")
kann ich ja nur öffnen ohne Prüfung. Warum auch hier ohne Pfadangabe?
Könnt ihr mir erklären was im einzelnen mit dieser 1. Sub... hier gemacht wird? Es passiert nichts? Wie kann ich Sub 1 und Sub 2 zu einer verbinden?
Ich weiß viele Fragen aber ich habe keinen blassen Schimmer.
Gruß Katjuscha
Anzeige
AW: Makro läuft nicht
18.01.2017 16:19:02
Katjuscha
Hallo zusammen,
hat denn niemand eine Idee warum mein Makro nicht läuft oder wie ich es vereinfachen kann?
Hilfe!!!
AW: Makro läuft nicht
22.01.2017 00:02:32
onur
Teste das mal:
Sub testbook()
Dim strBookName As String
strBookName = "Mappe11.xlsm"'Hier Dateinamen eingeben
If BookOpen(strBookName) Then
MsgBox strBookName & " is open", vbOKOnly + vbInformation
Else
MsgBox strBookName & " is NOT open", vbOKOnly + vbExclamation
End If
End Sub
Dieses in ein MODUL:
Public Function BookOpen(strBookName As String) As Boolean
Dim oBk As Workbook
On Error Resume Next
Set oBk = Workbooks(strBookName)
On Error GoTo 0
If oBk Is Nothing Then
BookOpen = False
Else
BookOpen = True
End If
End Function

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige