HERBERS Excel-Forum - das Archiv
mit einem Hyperlink 2 Ziele simultan öffnen
Holger

Hallo. Ich gebe Gitarrenunterricht. Über meinen Unterrichtsstundenverlauf mit den Schülern zusammen führe ich ein "Klassenbuch" ;-) damit ich weiss, was ich mit wem gemacht habe in der letzten Stunde. Manchmal schafft man nur einen Song, manchmal auf 2 Lieder.
Die Lieder habe ich allesamt als elektronische Noten verfügbar.
Ich möchte aus dem Klassenbuch heraus die Noten beim nächsten Mal mit einem Klick (1 !!!), auch wenn´s mehrere verschiedene sind, öffnen, so dass man gleich anschließen und loslegen kann.
Es soll also so aussehen, dass das "Klassenbuch.xls" ganz simple Spaltenüberschriften hat wie:
Datum | Kosten | Niveau | Lied | Fingerübung
und da steht dann e.g. drin:
12.12.2009 | 20 € | AnfängerIn | Streets Of London und Ayo Technology, Milow | Wechselschlagübung.
Wenn ich dann auf Streets Of London und Ayo Technology (die 2 heute sagen wir mal geübten Lieder) klicke, dann soll nicht nur Streets Of London aufgehen oder Ayo Technology sondern eben beides gleichzeitig unabhängig voneinander im Mehrinstanz - fähigen Elektroniknotenprogramm Guitar Pro (ist vorhanden) ...
geht das überhaupt oder kann man nur in Acrobat Professional von Adobe (9.0) multiple Linkziele festlegen?
Danke für Tipps ... Holger

AW: mit einem Hyperlink 2 Ziele simultan öffnen
Josef

Hallo Holger,
das geht meines Wissens nur mit VBA.
Die Dateinamen stehen in Spalte C und sind durch Semikolon (;) getrennt.
Im Code musst du den Pfad zu den Dateien noch anpassen.
Per Doppelklick auf die Zelle werden die Dateien mit dem Standardprogramm geöffnet.
' **********************************************************************
' Modul: Tabelle2 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
  (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
  ByVal lpParameters As String, ByVal lpDirectory As String, _
  ByVal nShowCmd As Long) As Long



Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim strPath As String, strFiles As Variant, lngIndex As Long
  
  strPath = "E:\Temp\" 'Pfad zu den Musikdateien - Anpassen!
  
  If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
  
  If Target.Column = 3 Then
    Cancel = True
    strFiles = Split(Target, ";")
    For lngIndex = 0 To UBound(strFiles)
      openFile strPath & Trim(strFiles(lngIndex))
      Sleep 500
    Next
  End If
End Sub

Private Sub openFile(ByVal FileName As String)
  ShellExecute 0, "Open", FileName, "", "", 7
End Sub

Gruß Sepp

AW: mit einem Hyperlink 2 Ziele simultan öffnen
Holger

Hallo, ich habe den Makroquelltext in VBA eingebunden. Wenn ich in Spalte C eingebe:
CD - Track 04 Übung 2.gp5;CD - Track 05 Übung 3.gp5
^ (ist die Syntax richtig?) ... dann will ich - wenn ich als Pfad
E:\F$Musik\Noten\$Lehrbücher\AMA Verlag GmbH\Kumlehns neues E-Gitarrenbuch\GuitarPro\ eingebe
auf E:\F$Musik\Noten\$Lehrbücher\AMA Verlag GmbH\Kumlehns neues E-Gitarrenbuch\GuitarPro\CD - Track 04 Übung 2.gp5
und
E:\F$Musik\Noten\$Lehrbücher\AMA Verlag GmbH\Kumlehns neues E-Gitarrenbuch\GuitarPro\CD - Track 05 Übung 3.gp5
kommen.
Es kommt aber dann die Fehlermeldung:
Fehler beim Kompilieren: Nach EndSub, EndFunction oder EndProperty können nur Kommentare stehen.
Woran liegt das?
Auch wüsste ich gerne, ob ich das Makro so nutzen kann, wenn ich in einem Klassenbuch 2 Pfade benötige, weil ich eben mit 2 verschiedenen, in verschiedenen Ordner befindlichen, Lehrbüchern arbeite?
Danke für die Bemühungen. LG HR
AW: mit einem Hyperlink 2 Ziele simultan öffnen
Josef

Hallo Holger.
der Fehler sagt mir, das du den Code nicht richtig oder nicht komplett in das Modul kopiert hast.
Die Unterstützung für mehrere Pfade lässt sich einbinden.
Gruß Sepp

Beispiel mit mehreren Pfaden
Josef

Hallo Holger,
hier der Code für zwei Pfade (kann erweitert werden).
' **********************************************************************
' Modul: Tabelle3 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
  (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
  ByVal lpParameters As String, ByVal lpDirectory As String, _
  ByVal nShowCmd As Long) As Long


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim strPath(1) As String, strFiles As Variant, lngIndex As Long, lngCount As Long
  
  strPath(0) = "E:\Temp" 'Erster Pfad
  strPath(1) = "E:\temp\Test" 'Zweiter Pfad
  'strPath(2) = "C:\xyz" 'Dritter Pfad - dazu muss die Deklaration von strPath(1)
  'auf strPath(2) geändert werden!
  
  If Target.Column = 3 Then
    Cancel = True
    strFiles = Split(Target, ";")
    For lngIndex = 0 To UBound(strFiles)
      strFiles(lngIndex) = Trim(strFiles(lngIndex))
      For lngCount = 0 To UBound(strPath)
        If Right(strPath(lngCount), 1) <> "\" Then strPath(lngCount) = strPath(lngCount) & "\"
        If Dir(strPath(lngCount) & strFiles(lngIndex), vbNormal) <> "" Then
          openFile strPath(lngCount) & strFiles(lngIndex)
          Sleep 500
          Exit For
        End If
      Next
    Next
  End If
End Sub

Private Sub openFile(ByVal FileName As String)
  ShellExecute 0, "Open", FileName, "", "", 7
End Sub

Gruß Sepp