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

Hyperlink per VBA erstellen

Forumthread: Hyperlink per VBA erstellen

Hyperlink per VBA erstellen
25.08.2003 13:26:54
thomasM
hallo,
ich wollte einen Hyperlink per Vba erstellen. habe dazu schon das archive durchsucht, doch die lösungsvorschläge funktionieren bei mir nicht.
ich habe zum einen das ausgetestet:
ActiveCell.FormulaR1C1 = wksProjekt.Range("B3")
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=strVerzeichnis & strArray(intAktivArrayfeld)
und das:
wkbName = strVerzeichnis & strArray(intAktivArrayfeld)
With Workbooks(wksProjekt.Range("B3")).Worksheets(1)
intRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Hyperlinks.Add .Cells(intRow, 1), Address:=wkbName
End With
wobei die 1te version zwar kein fehler erzeugt jedoch auch keinen hyperlink.
es soll die zelle B4 aus der datei: strVerzeichnis & strArray(intAktivArrayfeld)
ausgelesen werden. (hab ich schon)
dann soll der inhalt in zelle: "A" & intZeileschreiben (in diesem Fall A4)
geschrieben werden. (hab ich auch schon)
nun wollte ich eine änderung reinbringen: der inhalt soll als hyperlink auf die datei eingefügt werden.
Beispiel:
datei: vorlage.xls
zellinhalt: test
in A4 soll jetzt ein hypelink stehen der auf die datei: sstrVerzeichnis & "\vorlage.xls" verweist. wenn man jetzt auf "test" klickt wird man sofort weitergeleitet zur datei.
soweit meine idee. ich hoffe ihr versteht was ich will.
wenn nciht hier nochmal der komplette code:
Option Explicit

Sub DateienAuflisten()
Dim lngAkt                       As Long
Dim rngBereich                   As Range
Dim rngZelle                     As Range
Dim wksIndex                     As Worksheet
Dim wksProjekt                   As Worksheet
Dim strZelle                     As String
Dim strZellinhalt                As String
Dim strArray(1 To 50)            As String
Dim wkbName                      As String
Dim intZeileLesen                As Integer
Dim intZaehler                   As Integer
Dim intZeileSchreiben            As Integer
Dim intAktivArrayfeld            As Integer
Dim intBeschriebeneArrayfelder   As Integer
Dim intSpalte                    As Integer
Dim intAnzahlDateien             As Integer
Dim intRow                       As Integer
'Auslese Variablen
Dim strB3                        As String
Dim strB4                        As String
Dim strB5                        As String
Dim strB6                        As String
Dim strB8                        As String
Dim strB9                        As String
Dim strVerzeichnis               As String
Set wksIndex = ThisWorkbook.Sheets(1)
Worksheets("Tabelle1").Range("A4:F65536").ClearContents
strVerzeichnis = Worksheets("Tabelle1").Range("H8").Value
With Application.FileSearch                  'Hier werden alle Dateinamen aus einem Ordner
.NewSearch                                'in Tabelle 2 Spalte A geschrieben
.LookIn = strVerzeichnis
.SearchSubFolders = False
.FileType = msoFileTypeExcelWorkbooks
.Execute
For lngAkt = 1 To .FoundFiles.Count
Cells(lngAkt, 1) = Mid(.FoundFiles.Item(lngAkt), Len(strVerzeichnis) + 1)
Next lngAkt
End With                                     'bis hier werden die Dateinamen in die
'Zellen (A1,A2,A3,...) geschrieben
intZeileLesen = 2
intZeileSchreiben = 4
intBeschriebeneArrayfelder = 1
strZelle = "A1"
intBeschriebeneArrayfelder = 0
intAktivArrayfeld = 1
strZellinhalt = "Anfang"
intAnzahlDateien = 0
Do Until strZellinhalt = ""                          'Zellinhalte (Dateinamen) werden solange eingelesen bis die Zelle leer ist
strZellinhalt = Range(strZelle).Value           'Zellinhalt wird in Variable geschrieben
strArray(intAktivArrayfeld) = strZellinhalt     'schreibt Zellinhalt in Array
intAktivArrayfeld = intAktivArrayfeld + 1       'nächstes Arrayfeld wird aktiviert
strZelle = "A" & intZeileLesen
intZeileLesen = intZeileLesen + 1
intAnzahlDateien = intAnzahlDateien + 1
Loop
intBeschriebeneArrayfelder = intAktivArrayfeld - 1
For intAktivArrayfeld = 1 To intBeschriebeneArrayfelder - 1
Workbooks.Open strVerzeichnis & strArray(intAktivArrayfeld)             'Hier sollen die Zellinhalte einzeln
Set wksProjekt = ActiveWorkbook.Sheets(1)                               'in das Indexblatt geschrieben werden
wksIndex.Range("B" & intZeileSchreiben) = wksProjekt.Range("B3")
Set wksProjekt = ActiveWorkbook.Sheets(1)
wksIndex.Range("A" & intZeileSchreiben) = wksProjekt.Range("B4")
Hyperlink hierhin       'ActiveCell.FormulaR1C1 = wksProjekt.Range("B3")
'ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=strVerzeichnis & strArray(intAktivArrayfeld)
'wkbName = strVerzeichnis & strArray(intAktivArrayfeld)
'With Workbooks(wksProjekt.Range("B3")).Worksheets(1)
'    intRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
'    .Hyperlinks.Add .Cells(intRow, 1), Address:=wkbName
'End With
Set wksProjekt = ActiveWorkbook.Sheets(1)
wksIndex.Range("C" & intZeileSchreiben) = wksProjekt.Range("B5")
Set wksProjekt = ActiveWorkbook.Sheets(1)
wksIndex.Range("D" & intZeileSchreiben) = wksProjekt.Range("B6")
Set wksProjekt = ActiveWorkbook.Sheets(1)
wksIndex.Range("E" & intZeileSchreiben) = wksProjekt.Range("B8")
Set wksProjekt = ActiveWorkbook.Sheets(1)
wksIndex.Range("F" & intZeileSchreiben) = wksProjekt.Range("B9")
Workbooks(Right(strArray(intAktivArrayfeld), Len(strArray(intAktivArrayfeld)) - 1)).Close SaveChanges:=False
intZeileSchreiben = intZeileSchreiben + 1
strArray(intAktivArrayfeld) = ""
Next
Worksheets("Tabelle2").Range("A1:A" & intAnzahlDateien).Delete       'Hier soll der Inhalt von Spalte A gelöscht werden
End Sub

danke vielmals im vorraus,
thomasM
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hyperlink per VBA erstellen
25.08.2003 13:46:31
Michael Scheffler
Hi thomasM,
warum zeichnest Du Dir das Erstellen eines Hyperlinks nicht auf?
Gruß
Micha

AW: Hyperlink per VBA erstellen
25.08.2003 14:32:49
thomasM
hallo micha,
ich bekomme hier immer einen laufzeitfehler 1004 angezeigt:
wksIndex.Range("A" & intZeileSchreiben).Activate <<<< hier
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=strVerzeichnis & strArray(intAktivArrayfeld), TextToDisplay:=wksProjekt.Range("B4")
hab das mal aufgezeichnet und weis jetzt wie ich den namen des links änder,
nur die zieldatei will noch nicht rein.
die soll ja nicht fest sein sondern durch eine variable angegeben werden.
gruß,
thomasM

Anzeige
AW: Hyperlink per VBA erstellen
25.08.2003 14:52:26
thomasM
ich habe die hilfe und das archiv durchforstet und nix gefunden was mir weiterhilft.
das kann doch nicht sein das ich es nicht schaffe ein hyperlink zu erstellen. *haare rauf*

Hilfe, ich verzweifel langsam
25.08.2003 15:17:03
thomasM
AW: Hilfe, ich verzweifel langsam
26.08.2003 09:53:21
Michael Scheffler
Hi Thomas,
unter Einfügen - Hyperlink.
Gruß
Micha

Anzeige
mit VBA
26.08.2003 11:06:54
thomasM
hallo micha,
ich wollte den hyperlink per programm automatisch einfügen lassen.
nicht per hand. dazu sind es zuviele daten.
aber wenn ich den code dafür einsetze funktioniert es nicht.
gruß,
thomasM

;
Anzeige

Infobox / Tutorial

Hyperlinks in Excel mit VBA erstellen


Schritt-für-Schritt-Anleitung

Um einen Hyperlink mit VBA zu erstellen, kannst du folgende Schritte ausführen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
  3. Füge den folgenden Code ein:
Sub HyperlinkErstellen()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Tabelle1") ' Ändere den Blattnamen nach Bedarf
    Dim strVerzeichnis As String
    strVerzeichnis = ws.Range("H8").Value ' Verzeichnis aus Zelle H8
    Dim dateiName As String
    dateiName = "vorlage.xls" ' Beispiel-Dateiname

    ' Hyperlink erstellen
    ws.Hyperlinks.Add Anchor:=ws.Range("A4"), Address:=strVerzeichnis & "\" & dateiName, TextToDisplay:="Test"
End Sub
  1. Führe das Makro aus: Drücke F5 oder gehe zu "Ausführen" > "Sub/UserForm ausführen".

Damit wird ein Hyperlink in Zelle A4 erstellt, der auf die angegebene Datei verweist.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt häufig auf, wenn der angegebene Zellbereich nicht existiert oder falsch adressiert wird. Stelle sicher, dass der angegebene Bereich korrekt ist und die Zelle aktiv ist, bevor du den Hyperlink einfügst.

  • Hyperlink wird nicht erstellt: Wenn der Hyperlink nicht sichtbar ist, überprüfe den Code und stelle sicher, dass die Address und Anchor korrekt gesetzt sind.


Alternative Methoden

Falls du keinen VBA-Code verwenden möchtest, kannst du auch manuell einen Hyperlink einfügen:

  1. Wähle die Zelle aus, in der der Hyperlink erstellt werden soll.
  2. Klicke auf "Einfügen" > "Hyperlink".
  3. Gib die Adresse der Datei und den Text ein, der angezeigt werden soll.

Mit dieser Methode kannst du Hyperlinks ohne Programmierung erstellen, was für kleinere Datenmengen geeignet ist.


Praktische Beispiele

Hier sind einige Beispiele, wie du den VBA-Code anpassen kannst:

  1. Hyperlink zu einer externen Webseite:

    ws.Hyperlinks.Add Anchor:=ws.Range("B4"), Address:="http://www.example.com", TextToDisplay:="Besuche Example"
  2. Hyperlink zu einer Datei auf dem Desktop:

    Dim strDesktop As String
    strDesktop = Environ("USERPROFILE") & "\Desktop\"
    ws.Hyperlinks.Add Anchor:=ws.Range("C4"), Address:=strDesktop & "testdatei.xlsx", TextToDisplay:="Öffne Testdatei"

Tipps für Profis

  • Nutze ActiveSheet.Hyperlinks.Add, um Hyperlinks auf dem aktuell aktiven Blatt zu erstellen.
  • Achte darauf, die TextToDisplay-Eigenschaft zu verwenden, um den angezeigten Text des Hyperlinks anzupassen.
  • Verwende vba hyperlinks, um mehrere Hyperlinks in einer Schleife zu erstellen, wenn du viele Dateien verarbeiten musst.

FAQ: Häufige Fragen

1. Wie kann ich einen Hyperlink zu einer Datei erstellen, die sich in einem anderen Ordner befindet? Du kannst die Adresse entsprechend anpassen, indem du den Pfad zur Datei in der Address-Eigenschaft angibst.

2. Was ist der Unterschied zwischen Hyperlinks.Add und ActiveCell.FormulaR1C1? Hyperlinks.Add wird verwendet, um einen Hyperlink zu erstellen, während ActiveCell.FormulaR1C1 dazu dient, eine Formel oder einen Text in eine Zelle einzufügen.

3. Kann ich Hyperlinks auch zu Bildern einfügen? Ja, du kannst Hyperlinks zu Bildern erstellen, indem du die Add-Methode auf das Bildobjekt anwendest.

Mit diesen Informationen solltest du in der Lage sein, erfolgreich Hyperlinks in Excel mit VBA zu erstellen und anzupassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige