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

Forumthread: Link automatisch öffnen

Link automatisch öffnen
03.06.2022 01:55:39
Max_Danger
Hallo zusammen,
ich habe eine weitere Frage zu meinem kleinem Projekt. :)
Wenn eine Datenabfrage erfolgreich war, erscheint in "Tabelle 1 C9" ein Link.
Gibt es eine Möglichkeit diesen bei erscheinen, automatisch zu öffnen, ohne dass ich diesen anklicken muss?
Mein Makro sieht aktuell so aus:

Sub StartMakro()
Dim dblPruefung As Double
Neustart:
dblPruefung = WorksheetFunction.Sum(Range("C10:H10"))
Datenactual
PivotRefresh
If WorksheetFunction.Sum(Range("C10:H10")) 
Vielen Dank im vorraus.
Grüße
Max
Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Link automatisch öffnen
03.06.2022 18:52:42
Max_Danger
Hallo Thorsten,
vielen Dank für die Tipps.
Ich habe bei der Forensuche nach "Links" gestern nichts passendes gefunden.
Die Lösungsanszätze funktionieren, bei mir so leider nicht, da es sich nicht um einen "festen Hyperlink" handelt.
Der Hyperlink wird wenn das Makro einen passenden Datensatz gefunden hat erstellt.
Anschließend würde ich diesen gerne direkt automatisch öffnen, ohne dass ich Ihn erst manuell betätigen muss.
Es handelt sich um Links welche auf meinem Netzwerklaufwerk liegen. (.lnk) Files.
Wenn ich es richtig gelesen habe, ist so etwas anscheinend leider nicht möglich.
Viele Grüße
Max
Anzeige
AW: Link automatisch öffnen
03.06.2022 19:57:28
Oberschlumpf
Hi,
und wenn ich deine Antwort richtig verstehe, hast du meine Idee nicht verstanden :-)
im Link https://www.herber.de/forum/archiv/464to468/467432_VBA_String_aus_Hyperlink_auslesen.html
wird beschrieben, wie man den Hyperlink (Internetadresse) aus einer beliebigen Excel-Zelle auslesen kann.
Als Beispiel wird die Zelle B4 genannt.
Anstelle B4 wäre das für dich umgestellt = die Zelle "Tabelle 1 C9"
Sowohl für B4 als auch "Tabelle 1 C9" ist egal, welcher Hyperlink da drin steht - denn dieser wird aus der Methode .Hyperlinks(1).Address ausgelesen.
Jetzt war noch "spannend", ob und wie man diese ausgelesene, variable Adresse ohne weiteres (Klick)Zutun in einem Web-Browser aufrufen kann.
Und dafür hab ich dann den anderen Link gefunden: https://www.herber.de/forum/archiv/408to412/410272_Mit_VBA_eine_Website_URL_oeffnen.html
Und anstelle von (fest vorgebene Inet-Adresse)...

wshshell.Run "www.herber.de/"
...für deine Zwecke angepasst, hätte der Aufruf lauten könnten

wshshell.Run Sheets("Tabelle 1").Range("C9").Hyperlinks(1).Address
.
.
.
Aber Aber!!! Hyperlink? Webbrowser?!! Ich will doch eine .lnk-Datei öffnen!!!
Kann es sein, dass dir diese Wörter die ganze Zeit durch den Kopf gehen? :-)
Ok, dann sollten wir vielleicht über Begrifflichkeiten kommunizieren :-)
Als ich in deiner ersten Anfrage das Wort "Link" las, dachte ich sofort/und auch an nix anderes, als an Hyperlinks, oder eben Internetadressen, die man in Firefox, Chrome, etc aufruft.
Als ich aber nun in deiner Antwort an mich die Dateierweiterung ".lnk" las, dachte ich "Ohhhhh! DAS kenn zumindest ich in der Windows-Welt als Datei-Verknüpfung.
Die Bezeichnung "Link" für lnk-Dateien mag zwar durchaus hier und da und dort Verwendung finden, ist bzw war aber mir bis heute als solches nicht bekannt :-)
Nun denn, unabhängig davon...wenn du in meinem 2. Link weiterliest, weist auch der dortige Beitragsersteller darauf hin, dass er keine Internetadressen, sondern lokal gespeicherte Dateien öffnen will.
Ja, ich weiß, er möchte HTM-Dateien im Webbrowser öffnen, und deine lnk-Dateien sind nicht lokal sondern im NAS gespeichert.
Aber :-) - der Befehl lautet ja nur wshshell.RUN "pfad/Datei"
Vielleicht ist dem Run-Befehl "egal", welche Datei er starten soll, weil einfach das richtige Programm mit startet.
So, und egal ob lokal oder NAS, wenn du eine Nertzwerkfreigabe eingerichtet hast, dann beginnt auch diese mit "LW:\..."
(LW = Laufwerksbuchstabe für den NAS-Pfad)
So, jetzt bist wieder - du - dran! :-)
Ciao
Thorsten
Anzeige
AW: Link automatisch öffnen
04.06.2022 02:53:43
Max_Danger
Hallo Thorsten,
zu erst einmal vielen Dank für die viele Arbeit die Du in deine Hilfestellungen steckst.
Das ist wirklich großartig!
Ich komme aber einfach nicht dahinter, was ich wieder einmal falsch mache. :D
Ich habe alles so umgesetzt wie in dem entsprechenden Beitrag beschrieben.
Jedoch springt bei mir der Debugger an und meckert über folgenden Eintrag...

wshshell.Run Sheets("Dashboard").Range("C9").Hyperlinks(1).Address
Dieser ist Teil meines Moduls "link"

Sub link()
Set wshshell = CreateObject("WScript.Shell")
wshshell.Run Sheets("Dashboard").Range("C9").Hyperlinks(1).Address
End Sub
...und diesen habe ich meiner Routine hinzugefügt...

Sub StartMakro()
Dim dblPruefung As Double
Neustart:
dblPruefung = WorksheetFunction.Sum(Range("C10:H10"))
Datenactual
PivotRefresh
If WorksheetFunction.Sum(Range("C10:H10")) 
Weißt Du vielleicht was ich falsch gemacht habe?
Es sollte doch eigentlich alles passen...
VG
Max
Anzeige
HUCH! :-O
04.06.2022 08:32:17
Oberschlumpf
Moin :-)
"HUCH! :-O" hatte ich im ersten Moment gedacht "funktioniert all das - doch nicht - so, wie ich zuvor beschrieben hatte?"
zumal ich ja meine "Behauptung" ...
Vielleicht ist dem Run-Befehl "egal", welche Datei er starten soll, weil einfach das richtige Programm mit startet.
...selbst gar nicht getestet hatte! :-)
Macht aber nix, is trotzdem nich meine Schuld, wenn's nich geht, weil ich ja den Satz mit "Vielleicht" begonnen hatte :-)
Nun denn, ich wollte es trotzdem wissen!
Aber...mist...JETZT hatte ich das mit "wshshell.Run Sheets(...usw" ausprobiert, und auch ich erhielt genau in der Codezeile einen Laufzeitfehler...
Egal...erst mal :-)...wofür gibt es Google, wenn nicht extra für EXCEL-FANS!!!! :-)
a) gefunden hab ich https://www.herber.de/forum/archiv/1396to1400/1396099_Verknuepfung_lnk_mit_VBA_starten.html
b) die Lösung ist: der Parameter hinter wshshell.Run muss mit Anführungszeichen beginnen und auch enden, z Bsp so:

wshshell.Run Chr(34) & Sheets("Dashboard").Range("C9").Hyperlinks(1).Address & Chr(34)
die "-Zeichen sind die beiden Befehle Chr(34)
Wenn du deinen Befehl nun so umbaust, reicht dir das vielleicht schon als Antwort von mir.
Aber da ich ja getestet habe, hab ich auch eine Testdatei:
https://www.herber.de/bbs/user/153416.xlsm
Damit diese Datei, bzw die Links darin auch bei dir funktionieren, musst du unbedingt die Hinweise ab Zelle C18 beachten!
So, wenns nun bei dir noch immer nicht klappt, dann geh Häkeln! :-PP :-)
Ciao
Thorsten
Anzeige
AW: HUCH! :-O
04.06.2022 16:48:44
Max_Danger
Hallo Thorsten,
vielen Dank für Deine umfassende und gute Erläuterung.
Ich werde mich wohl dennoch dem Häckeln widmen müssen. :(
In deiner Testdatei funktioniert natürlich, wie erwartet, alles spitzenmäßig.
In meiner Datei natürlich nicht. :D
Kann es vlt. wieder daran liegen, dass sich der Link dynamisch berechnet und erst dann "erscheint"?
Ich glaube es handelt sich um das gleiche Phänomen, wie "damals" mit der Formel worksheet.change, welche nur funktioniert, wenn etwas manuell eingetragen wird.
Wenn der Link erscheint, öffnet er sich bei mir leider nicht automatisch.
Wenn ich anschließend in die Zelle klicke um den Link manuell zu betätigen, meldet sich der Debugger...
"Lauzeitfehler 9"
Index außerhalb des gültigen Bereichs
Code in Tabelle "Dashboard"

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$9" Then
link
End If
End Sub
Modul "Link"

Option Explicit
Sub link()
Dim wshshell As Object
Set wshshell = CreateObject("WScript.Shell")
wshshell.Run Chr(34) & Sheets("Dashboard").Range("C9").Hyperlinks(1).Address & Chr(34)
End Sub
Mein Hauptmakro, habe ich jetzt unverändert gelassen, das ist doch richtig, oder?

Sub StartMakro()
Dim dblPruefung As Double
Neustart:
dblPruefung = WorksheetFunction.Sum(Range("C10:H10"))
Datenactual
PivotRefresh
If WorksheetFunction.Sum(Range("C10:H10")) 
Es ist echt zum verzweifeln. :D
Vlt. findet sich ja noch eine Lösung.
Vielen Dank
VG
Max
Anzeige
AW: HUCH! :-O
04.06.2022 17:20:46
Oberschlumpf
Hi,
...es heißt nicht Häckeln, sondern Häkeln... - finde den Unterschied
(aber das nur am Rande)
Ja, sorry, jetzt weiß ich auch nicht mehr weiter - vllt hast du recht, dass der Code ins Calculate-Ereignis muss - das ist aber kein weiterer Tipp von mir, sondern nur "laut gedacht" - ich weiß nix mehr.
Ciao
Thorsten
Anzeige
AW: Link automatisch öffnen
03.06.2022 07:40:16
oraculix
Hallo
Da ich deine Arbeitsmappe nicht habe vermute ich das es so gehen könnte!

Sub StartMakro()
Dim dblPruefung As Double
Neustart:
dblPruefung = WorksheetFunction.Sum(Range("C10:H10"))
Datenactual
PivotRefresh
If WorksheetFunction.Sum(Range("C10:H10")) 
Gruß
Oraculix
Anzeige
AW: Link automatisch öffnen
03.06.2022 18:58:57
Max_Danger
Hallo Oraculix,
vielen Dank für Deinen Lösungsvorschlag.
Leider funktioniert es nicht wie gewünscht. Der Debugger meldet sich.
Der Ansatz ist denke ich richtig.
Zum Ablauf
Das Makro durchläuft die Datensätze so lange bis ein passendes Ergebnis gefunden wurde.
Aus dem passenden Datensatz erstelle ich mit einer Formel den Hyperlink zu einer (".lnk") Datei.
Der Hyperlink liegt in einem separaten Ordner auf meinem Netzwerkspeicher.
Wenn ich es manuell betätige klappt es problemlos.
Jetzt ist die Frage, ob es mit Excel überhaupt möglich ist bei einem solchem Aufbau den Link automatisch zu öffnen.
VG
Max
Anzeige
AW: Link automatisch öffnen
04.06.2022 05:11:34
oraculix
Versuch das mal!

Sub StartMakro()
On Error GoTo Fehlerbehandlung
Dim dblPruefung As Double
Neustart:
dblPruefung = WorksheetFunction.Sum(Range("C10:H10"))
Datenactual
PivotRefresh
If WorksheetFunction.Sum(Range("C10:H10")) 
Gruß
Oraculix
AW: Link automatisch öffnen
04.06.2022 20:02:19
Max_Danger
Hi Oraculix,
vielen Dank für Deine Rückmeldung.
Ich habe aber kein Sub "Fehlerbehandlung".
Was soll dort passieren?
Wenn ich es so umsetze, springt direkt der Debugger an und das Makro startet erst gar nicht...
VG
Max
Anzeige
AW: Link automatisch öffnen
04.06.2022 20:49:53
oraculix
Hallo
Du hast geschrieben das sich dein Debugger sich einschaltet deshalb Error Code.
Weil
If WorksheetFunction.Sum(Range("C10:H10")) nur funktioniert wenn du was eingibst in C9 daher kommt der Fehler weil keine Eingabe erfolgt.
Ich habe meinen Code in einer neuen Arbeitsmappe getestet und er funktioniert Prima.

Sub Link()
Cells(9, 3).Hyperlinks(1).Follow
End Sub
On Error GoTo Fehlerbehandlung
Der Fehler wird ausgeschaltet was ja eigentlich kein Fehler ist sondern es hat keine neue Eingabe in C9 gegeben.
Nur wenn Du einen neuen Eintrag hast in C9 sollte der Link geöffnet werden.
Gruß
Oraculix
Anzeige
AW: Link automatisch öffnen
05.06.2022 01:28:11
Max_Danger
Hallo Oraculix,
vielen Dank!!!
Deine Lösung funktioniert soweit, zumdindest wenn ein fester Link in der Zeile vorhanden ist.
Wenn dieser aber über die Hyperlink Formel erst gebildet wird, klappt es leider nicht.
Ich denke es liegt daran, dass der Link noch nicht verfügbar ist, wenn das Makro versucht diesen zu öffnen.
Ist es vlt. möglich einen Loop einzubauen, der es mehrfach versucht?
Ich denke damit könnte man das Problem beseitigen. :)
VG
Max
Anzeige
AW: Link automatisch öffnen
04.06.2022 21:17:54
Oberschlumpf
Hi,
ersetz im gezeigten Code mal...

Fehlerbehandlung
...durch

Fehlerbehandlung:
Oraculix, oder wie er heißt, hat als letztes Zeichen den Doppelpunkt vergessen.
Ob damit dein eigtl Problem erledigt ist, weiß ich nicht, aber zumindest "springt" der Debugger nicht mehr sofort an, so wie du es beschrieben hattest.
Ciao
Thorsten
Anzeige
AW: Link automatisch öffnen
05.06.2022 01:30:53
Max_Danger
Hallo Thorsten,
vielen Dank.
Daran hat es gelegen. :)
Das Makro funktioniert jetzt auch soweit.
Zumindest so lange der Link schon vorhanden ist.
Wenn dieser erst über die Hyperlink Formel gebildet werden muss, klappt es leider nicht.
Ich vermute es liegt daran, dass der Link noch nicht vorhanden ist, wenn das Makro versucht es zu öffnen.
Könnte man das vlt. mit einem Loop/Wiederholung umgehen?
Also dass er es mehrfach versucht, bis es funktioniert?
Danke nochmal für Deinen tollen Einsatz!!
VG
Max
Anzeige
AW: Link automatisch öffnen
05.06.2022 02:09:48
Oberschlumpf
Hi,
ich hatte dich doch schon in meiner anderen Antwort um 17:20:46 informiert, dass ich nix weiter weiß.
Hier hatte ich nur "nachgeholfen", weil eben "nur" ein Doppelpunkt fehlte.
Ciao
Thorsten
AW: Link automatisch öffnen
05.06.2022 03:04:48
Max_Danger
Hi Thorsten,
das stimmt.
Ich dachte nur, weil es jetzt ein anderer Lösungansatz ist, der für mein Szenarion soweit funktioniert.
Meiner Meinung nach jedoch wiederholt werden muss, bis der Link auch aufgebaut ist.
Wollte dich nicht nerven. :)
VG
Max
Anzeige
AW: Link automatisch öffnen
06.06.2022 02:00:15
Max_Danger
Hallo zusammen,
ich habe jetzt alles ausprobiert was ich ausprobieren konnte und bin nun endlich auf den Fehler gestoßen.
Anscheinend erkennt VBA erstellte Hyperlinks über die Hyperlink Formel nicht als Hyperlink an.
Das hätte ich nun wirklich nicht erwartet.
Nach langem googlen, bin ich auf einen Codeschnipsel gestoßen, mit dem man das Problem lösen sollte.
Leider meckert der Debugger bei folgendem Eintrag: "If Dir(addr) "" Then"
Meine VBA Kenntnisse sind leider zu schlecht um es ans laufen zu bekommen.
Kann mir vielleicht jemand helfen, wie ich meine erstellten Hyperlinks in "Tabelle1" "C9:H9" in richtige Hyperlinks mit dem entsprechenden Code umwandeln kann?

Sub HperlinkformelInHyperlink()
Dim fc As Range, addr, tmp
For Each fc In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
If InStr(fc.Formula, "=HYPERLINK(") > 0 Then
tmp = Split(fc.Formula, ",") 'trennen adresse und fr. name
addr = Split(tmp(0), """")(1)
If Dir(addr)  "" Then
fc.ClearContents
ActiveSheet.Hyperlinks.Add Anchor:=fc, Address:=addr, _
TextToDisplay:=Dir(addr)
Else
MsgBox "Hyperlinkpfad in " & fc.Address & " stimmt nicht."
End If
addr = ""
End If
Next
End Sub
Vielen Vielen Dank
Grüße
Max
Anzeige
AW: Link automatisch öffnen
06.06.2022 20:29:29
Max_Danger
Hallo zusammen,
Thema kann geschlossen werden.
Ich habes es schlussendlich mit ein bisschen Trickserei hinbekommen. :)
Vielen Dank nochmal an alle Helfer!!
Grüße
Max
;
Anzeige
Anzeige

Infobox / Tutorial

Automatisches Öffnen von Links in Excel


Schritt-für-Schritt-Anleitung

Wenn du einen Link in Excel automatisch öffnen möchtest, kannst du dies mit VBA (Visual Basic for Applications) umsetzen. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinArbeitsblatt)", gehe auf "Einfügen" und wähle "Modul".

  3. Kopiere den folgenden Code und füge ihn ein:

    Sub LinkAutomatischOeffnen()
       Dim wshshell As Object
       Set wshshell = CreateObject("WScript.Shell")
       wshshell.Run Sheets("Tabelle1").Range("C9").Hyperlinks(1).Address
    End Sub
  4. Füge einen Trigger hinzu: Um den Link automatisch zu öffnen, kannst du das Worksheet_Change-Ereignis verwenden. Füge diesen Code in das entsprechende Arbeitsblatt-Modul ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Me.Range("C9")) Is Nothing Then
           LinkAutomatischOeffnen
       End If
    End Sub
  5. Testen: Ändere den Wert in Zelle C9, um zu sehen, ob der Link automatisch geöffnet wird.


Häufige Fehler und Lösungen

  • Fehler: „Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs“

    • Lösung: Überprüfe, ob wirklich ein Hyperlink in der angegebenen Zelle (z. B. C9) vorhanden ist, bevor du versuchst, ihn zu öffnen.
  • Links öffnen sich nicht beim Anklicken

    • Lösung: Stelle sicher, dass der Wert in C9 tatsächlich ein Hyperlink ist und nicht nur eine Textdarstellung.
  • Debugging bei dynamischen Links

    • Wenn der Link erst durch eine Formel erstellt wird, könnte es hilfreich sein, eine kurze Verzögerung oder Wiederholung einzubauen, bis der Link tatsächlich verfügbar ist.

Alternative Methoden

Wenn du den Link nicht automatisch öffnen kannst, gibt es Alternativen:

  1. Hyperlinks manuell öffnen: Nutze die Methode Follow für Hyperlinks:

    Sub LinkManuellOeffnen()
       Sheets("Tabelle1").Range("C9").Hyperlinks(1).Follow
    End Sub
  2. Links mit Chrome öffnen: Du kannst auch einen spezifischen Browser angeben, indem du den Pfad zu Chrome im Run-Befehl angibst:

    wshshell.Run "C:\Program Files\Google\Chrome\Application\chrome.exe " & Chr(34) & Sheets("Tabelle1").Range("C9").Hyperlinks(1).Address & Chr(34)

Praktische Beispiele

Hier ein Beispiel, wie du VBA verwenden kannst, um Links in Excel zu öffnen:

Sub BeispielLinkOeffnen()
    Dim linkAdresse As String
    linkAdresse = Sheets("Tabelle1").Range("C9").Hyperlinks(1).Address
    If Dir(linkAdresse) <> "" Then
        ' Link existiert
        CreateObject("WScript.Shell").Run Chr(34) & linkAdresse & Chr(34)
    Else
        MsgBox "Der Link existiert nicht!"
    End If
End Sub

Setze diesen Code in dein Modul, um den Link aus C9 zu öffnen, falls er existiert.


Tipps für Profis

  • Verwende Error-Handling: Um Laufzeitfehler zu vermeiden, kannst du On Error Resume Next verwenden, bevor du den Link öffnest.
  • Automatisierung: Überlege, ob du einen Timer oder eine Schleife einbauen kannst, um sicherzustellen, dass der Link vollständig geladen ist, bevor er geöffnet wird.
  • Formel in richtigen Hyperlink umwandeln: Falls du Hyperlinks dynamisch erstellst, stelle sicher, dass sie auch als echte Hyperlinks in Excel behandelt werden. Nutze den Code, um diese zu konvertieren.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Link immer geöffnet wird? Um sicherzugehen, kannst du eine Schleife einfügen, die mehrfach versucht, den Link zu öffnen, bis er verfügbar ist.

2. Was mache ich, wenn der Link auf einen Netzwerkpfad verweist? Stelle sicher, dass du den richtigen Netzwerkpfad und die entsprechenden Berechtigungen hast. Verwende den Laufwerksbuchstaben in deinem VBA-Code.

3. Wie kann ich Links in Excel mit Chrome öffnen? Verwende den Run-Befehl in VBA, um den Chrome-Pfad anzugeben und den Link zu öffnen, wie im Abschnitt „Alternative Methoden“ beschrieben.

4. Wie heißt der Schlumpf, der immer meckert? Das ist „Oberschlumpf“ – auch hier könnte man sagen, dass er oft hilfreiche Tipps gibt!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige