Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1084to1088
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
Hyperlink generieren
Kai
Hallo zusammen,
ich bin schon ne ganze Weile am bastelln, leider komm eich jetzt nicht mehr weiter.
Ich versuch mal zu beschreiben was ich machen will.
Also ich habe eine Excel Tabelle angelegt die über ein userform mit Daten gefüttert wird.
Die Daten werden immer nach der letzten Zeile eingefügt nachdem ich den Butten "Daten übernehmen" gedrückt habe. Jetzt möchte ich aber das jedes mal wenn ich den Butten drücke in dieser Zeile im letzten Feld ein Hyperlink generiert wird. beim späteren betätigen dieses Links sollen gewisse Daten aus der selben Zeile in eine ander Excel Datei übernommen werden. Der Hyperlink soll "Checkliste" heißen.
Ich habe wirklich schon einige Stunden versucht das hin zu bekommen. Leider ohne Erfolg.
Ich würde mich sehr über Eure Hilfe freuen.
Vielen Dank
Kai

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Hyperlink generieren
24.06.2009 17:06:59
fcs
Hallo Kai,
Code für Hyperlink schaut etwa so aus. Dateinamen muss du anpassen.
Damit du nach Klick auf den Hyperlink auch automatisch Daten in die Zieldatei eintragen kannst muss du für die Spalte mit den Hyperlinks noch folgendes Ereignismakro einbauen und anpassen. Dieses muss du dann um die Aktionen ergänzen, die in der Zieldatei stattfinden sollen.
Gruß
Franz

Sub Hyperlink_einfuegen()
Dim wks As Worksheet, Zelle As Range
Set wks = ActiveSheet
With wks
'Zelle für Hyperlink - letzte Zeile Spalte A, Spalte G
Set Zelle = .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 6)
.Hyperlinks.Add Anchor:=Zelle, Address:="C:\Lokale Daten\Test\62707.xls", _
TextToDisplay:="Checkliste"
End With
End Sub
'Zusätzliche Ereignisprozedur.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim wbStart As Workbook, wksStart As Worksheet, ZeileStart As Long
Dim wbZiel As Workbook, wksZiel As Worksheet
'Klicks in Spalte 7 überwachen
If Target.Column = 7 And Target.Cells.Count = 1 Then
If Target.Hyperlinks.Count > 0 Then
Set wbStart = ThisWorkbook
Set wksStart = Me
ZeileStart = Target.Row
'      MsgBox "Mich hat es auch erwisch!" 'Testzeile
Set wbZiel = ActiveWorkbook
Set wksZiel = wbZiel.Worksheets(1)
MsgBox "Startpunkt" _
& vbLf & wbStart.Name _
& vbLf & wksStart.Name _
& vbLf & "Zeile: " & ZeileStart _
& vbLf & vbLf & "Zielpunkt" _
& vbLf & wbZiel.Name _
& vbLf & wksZiel.Name  'Testzeile
'ab hier dann Code für Daten-Übertragung zwischen den beiden Blättern
End If
End If
End Sub


Anzeige
AW: Hyperlink generieren
24.06.2009 23:18:12
Kai
Hallo und danke für die schnelle Antwort.
Ich habe den Code zum erstellen soweit übernommen, leider geht der Rest noch nicht.
Im Anhang habe ich mal die 2 Dateien, die obere ist die Datei mit userform und die untere ist die Datei in die die Daten übergeben werden sollen. Wenn man über das userform die Daten übernimmt setzt er einen Hyperlink. Wenn ich da drauf klicke geht die andere Datei auf, aber ich möchte noch einige daten aus der Zeile übernehmen. Wenn ihr einen Probelauf startet seht ihr was ich meine.
Danke
https://www.herber.de/bbs/user/62729.xls
https://www.herber.de/bbs/user/62730.xlt
Anzeige
AW: Hyperlink generieren
25.06.2009 21:44:45
fcs
Hallo Kai,
ich hab schon mal ein wenig probiert mein zweites Makro anzupassen.
Die Datenübertragung funktioniert auch. Ich hab aber noch ein Problem, dass die Datei am Ende des Makros aus unerfindlichen Gründen ausgeblendet wird.
Eine Frage hab ich aber noch.
Die Checkliste_leer ist ja eine xlt-Datei, sprich Excelvorlage-Datei.
Ich nehme an, die willst jede Zeile aus der Datei mit dem Userform jeweils in einer eigenen Datei speichern, die auf Basis der Vorlage erstellt wird. Dazu braucht es nicht den Hyperlink in jeder Zeile. Das könnte man auch mit einem Doppelklick in die Zelle lösen, dann wird dann das Leerformular als neue Datei angelegt und mit Daten befüllt.
Ein Hyperlink macht hier eigentlich nur Sinn, wenn für jede Zeile ein eigener Dateiname verknüpft wird oder wenn in einer Datei für jede Zeile ein eigens Tabellenblatt angelegt wird. Das funktioniert aber in Excel 2003 nur bis 255 Tabellenblätter pro Datei.
Gruß
Franz
Anzeige
AW: Hyperlink generieren
26.06.2009 10:12:32
Kai
Hallo Franz,
vielen Dank das Du dich meiner so annimmst. Das ist wirklich ausgesprochen nett.
Jetzt zurück zum Projekt.
Also wie Du schon richtig erkannt hast, will ich aus der Datei "Sonderthemenplan.xls" per klick auf den Link einige Daten aus der selben Zeile in die Datei "ChecklisteBlanko.xlt" übernehmen, natürlich in die richtigen Felder. In die ChecklisteBlanko.xlt werde ich noch einen Speicherbutton mit druckfunktion einbauen. Gespeichert wird dann in einen seperaten Ordner, jede Datei für sich bestehend aus dem Rechnungsstichwort. Das bekomm ich aber alleine hin, damit will ich dich nicht belasten.
Ob ich mein eigentliches Problem jetzt per Hyperlink löse oder per doppelklick auf die Zeile ist mir egal. Wichtig ist nur das ich nicht auf jede Zelle einzeln klicken muss sondern alle Daten auf einen Schlag übernommen werden. Die Variante mit dem Hyperlink gefällt mir aber etwas besser. Da ich das selbe noch mal machen will und dann abkucken kann.
Ach ja, auch wenn deine Variante die Datei am Schluss ausblendet, würde mich das Zwischenergebnis tortzdem interessieren.
Vielen Danke
Kai
Anzeige
AW: Hyperlink generieren
26.06.2009 15:21:25
fcs
Hallo Kai,
hier mal die Makros für beide Varianten. Bitte nur eine einbauen, da sich die beiden Versionen nicht unbedingt vertragen.
Die Doppelklickvariante hat halt den Vorteil, dass du nicht versehentlich deine Vorlage überschreibts.
Gruß
Franz

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Wenn Eintrag "Checkliste" in Zelle, dann wird nach Doppelklick eine neue Arbeitsmappe _
auf Basis der Vorlage erstellt und daten eingetragen.
Dim wbStart As Workbook, wksStart As Worksheet, ZeileStart As Long
Dim wbZiel As Workbook, wksZiel As Worksheet
'Klicks in Spalte 30 (AD) überwachen
If Target.Column = 30 And Target.Cells.Count = 1 Then
Cancel = True
If Target.Value = "Checkliste" Then
Set wbStart = ThisWorkbook
Set wksStart = Me
ZeileStart = Target.Row
'      MsgBox "Mich hat es auch erwisch!" 'Testzeile
'Leerblatt auf Basis Muster als neue Datei anlegen
Workbooks.Add Template:=ThisWorkbook.Path & _
Application.PathSeparator & "checklisten\checklisteblanko.xlt"
Set wbZiel = ActiveWorkbook
Set wksZiel = wbZiel.Worksheets("Tabelle1") 'leere Checklistentabelle
MsgBox "Startpunkt" _
& vbLf & wbStart.Name _
& vbLf & wksStart.Name _
& vbLf & "Zeile: " & ZeileStart _
& vbLf & vbLf & "Zielpunkt" _
& vbLf & wbZiel.Name _
& vbLf & wksZiel.Name                     'Testzeile
'ab hier dann Code für Daten-Übertragung zwischen den beiden Blättern
wksZiel.Cells(3, 2) = Date                                'erstellt am
wksZiel.Cells(8, 1) = wksStart.Cells(ZeileStart, 1).Value 'KW
wksZiel.Cells(5, 2) = wksStart.Cells(ZeileStart, 4).Value 'Thema
wksZiel.Cells(11, 2) = wksStart.Cells(ZeileStart, 13).Value 'St/SB
'u.s.w.
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Wechselt in die per Hyerlink geöffnete Vorlagedatei
Dim wbStart As Workbook, wksStart As Worksheet, ZeileStart As Long
Dim wbZiel As Workbook, wksZiel As Worksheet
'Klicks in Spalte 30 (AD) überwachen
If Target.Column = 30 And Target.Cells.Count = 1 Then
If Target.Hyperlinks.Count > 0 Then
Set wbStart = ThisWorkbook
Set wksStart = Me
ZeileStart = Target.Row
'      MsgBox "Mich hat es auch erwisch!" 'Testzeile
Set wbZiel = Workbooks("checklisteblanko.xlt")
Set wksZiel = wbZiel.Worksheets("Tabelle1") 'leere Checklistentabelle
MsgBox "Startpunkt" _
& vbLf & wbStart.Name _
& vbLf & wksStart.Name _
& vbLf & "Zeile: " & ZeileStart _
& vbLf & vbLf & "Zielpunkt" _
& vbLf & wbZiel.Name _
& vbLf & wksZiel.Name                     'Testzeile
'ab hier dann Code für Daten-Übertragung zwischen den beiden Blättern
wksZiel.Cells(3, 2) = Date                                'erstellt am
wksZiel.Cells(8, 1) = wksStart.Cells(ZeileStart, 1).Value 'KW
wksZiel.Cells(5, 2) = wksStart.Cells(ZeileStart, 4).Value 'Thema
wksZiel.Cells(11, 2) = wksStart.Cells(ZeileStart, 13).Value 'St/SB
'u.s.w.
'Cursor aus Zelle mit Hyperlink bewegen, sonst regiert bei erneutem Klick _
auf den Hyperlink ggf. das Selection-Ereignis nicht.
wbStart.Activate
Target.Offset(0, 1).Select
wbZiel.Activate
End If
End If
End Sub


Anzeige
AW: Hyperlink generieren
27.06.2009 17:54:16
Kai
Hallo Franz,
Danke für die beiden Codes. Ich habe gerade versucht sie einzubauen. aber wahrscheinlich bin ich zu doof dafür.
Wo genau muss er den hin ?
Ich habe es direkt unter den Code zur Erzeugung des Hyperlinks gesetzt aber nichts geht.
Vielleicht könntest Du mir noch sagen wo er hin kommt.
lg
Kai
AW: Hyperlink generieren
28.06.2009 10:47:43
fcs
Hallo Kai,
die Prozeduren müssen im VBA-Editor unter dem Tabellenblatt "2009" eingefügt werden.
Im Code des Userforms hast du eine nicht so besonders gute Methode gewählt, um nach dem Speichern eines Datensatzes ein leeres Formular für die nächste Eingabe zu erzeugen. Bei mehreren Datensätzen, die ohne Schließen des Formulars eingegeben werden, verschachteln sich die Makros durch den immer neuen "Show"_Befehl für das Userform immer weiter.
Was wolltest du denn mit den 2 Keys {TAB} Befehlen erreichen? Im Moment bewirken sie "nur", dass sich die selektierte Zelle beim Schließen des Formulars um eine entsprechende Zahl Zellen nach rechts bewegt.
Besser ist es zum Zurücksetzen des Formulars bewußt alle Textfelder mit Leerstrings zu füllen.
Der Code für das Userform sollte dann etwa wie folgt aussehen, wobei ich das zurücksetzen der Felder in eine separate Routine gepackt hab.
Gruß
Franz

Private Sub CommandButton1_Click()
Dim letzte_Zeile As Long
letzte_Zeile = Range("A65536").End(xlUp).Offset(1, 0).Row
Cells(letzte_Zeile, 1) = CDec(Replace(TextBox1, ".", ","))
Cells(letzte_Zeile, 4) = TextBox2
Cells(letzte_Zeile, 5) = TextBox3
Cells(letzte_Zeile, 7) = TextBox4
Cells(letzte_Zeile, 8) = TextBox5
Cells(letzte_Zeile, 9) = TextBox6
Cells(letzte_Zeile, 10) = TextBox7
Cells(letzte_Zeile, 11) = TextBox8
Cells(letzte_Zeile, 12) = TextBox9
Cells(letzte_Zeile, 13) = TextBox10
Cells(letzte_Zeile, 14) = TextBox11
Cells(letzte_Zeile, 15) = TextBox12
Cells(letzte_Zeile, 16) = TextBox13
Cells(letzte_Zeile, 18) = TextBox14
Cells(letzte_Zeile, 20) = TextBox15
Cells(letzte_Zeile, 21) = TextBox16
Cells(letzte_Zeile, 22) = TextBox17
Cells(letzte_Zeile, 25) = TextBox18
Cells(letzte_Zeile, 29) = TextBox19
Cells(letzte_Zeile, 26) = TextBox20
Cells(letzte_Zeile, 28) = TextBox21
Cells(letzte_Zeile, 17) = TextBox22
Dim wks As Worksheet, Zelle As Range
Set wks = ActiveSheet
With wks
'Zelle für Hyperlink - letzte Zeile Spalte A, Spalte AD
Set Zelle = .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 29)
.Hyperlinks.Add Anchor:=Zelle, Address:="checklisten\checklisteblanko.xlt", _
TextToDisplay:="Checkliste"
End With
Call EingabefelderZuruecksetzen
Me.TextBox1.SetFocus
End Sub
Sub EingabefelderZuruecksetzen()
With Me
.TextBox1 = ""
.TextBox2 = ""
.TextBox3 = ""
.TextBox4 = ""
.TextBox5 = ""
.TextBox6 = ""
.TextBox7 = ""
.TextBox8 = ""
.TextBox9 = ""
.TextBox10 = ""
.TextBox11 = ""
.TextBox12 = ""
.TextBox13 = ""
.TextBox14 = ""
.TextBox15 = ""
.TextBox16 = ""
.TextBox17 = ""
.TextBox18 = ""
.TextBox19 = ""
.TextBox20 = ""
.TextBox21 = ""
.TextBox22 = ""
End With
End Sub
Private Sub CommandButton2_Click()
Range("A4").Select
Range("A4:A225").Select
Selection.Sort Key1:=Range("A5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A4").Select
End Sub
Private Sub CommandButton3_Click()
Unload UserForm1
End Sub


Anzeige
AW: Hyperlink generieren
30.06.2009 11:31:29
Kai
Hallo Franz,
erst mal vielen Dank für deine hilfe, war echt super und klappt auch alles.
Kannst Du mir noch sgen welcher Code den Hyperlink nach dem drücken wieder löscht.
Und mit welchem Code ich alle Button und Makross aus einer Datei lösche, damit der Leser nicht immer die Meldung mit den Makros bekommt.
Vielen Dank
Kai

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige