Warum nicht kostenlos? Sind doch nur ein paar Befehle! Das ist so als wenn man einen Handwerker aus der Nachbarschaft bestellt, der dir nur einen Nagel in die Wand hämmern soll. Als Unkostenbeitrag fällt da höchstens 'ne Flasche Bier an. Prost!
Probier mal folgenden Code. Dieser gehört in Mappe1 in das Tabellenmodul das die Artikelnummern in Spalte 3 enthält. Der Code öffnet Mappe2 (sofern nicht bereits geöffnet) sucht den gewünschten Hyperlink und führt ihn aus.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error GoTo Fehler 'Wenn der Artikel oder der Pfad nicht existiert
Dim Pfad As String, m2Name As String, Pos As Long
Pfad = "D:\Daten\Entwicklung\Tests\Rohstoffverzeichnis.xlsx"
If Not Intersect(Target, Columns(3)) Is Nothing Then 'Prüft ob der Doppelklick in Spalte 3 ausgeführt wurde
If IsEmpty(Target) Then Exit Sub Else Cancel = True 'springt in die Zelle wenn diese leer ist, sonst nicht.
If Pfad <> "" Then m2Name = Right(Pfad, Len(Pfad) - InStrRev(Pfad, "\")) 'Liest den Dateinamen von Mappe2 aus dem Pfad aus.
If Not IsOpen(m2Name) Then Workbooks.Open Pfad 'wenn Datei nicht geöffnet ist, wird diese geöffnet.
With Workbooks(m2Name).Worksheets(1) 'springt auf das erste Tabellenblatt in Mappe2
Pos = Application.Match(Target.Value, .Columns(1), 0) 'sucht die Zeile mit der gewünschten Artikelnummer in Spalte 1
.Activate 'aktiviert Mappe2, damit die Select-Methode ausgeführt werden kann.
If Pos > 0 Then
.Cells(Pos, 15).Select 'markiert die gewünschte Zelle in Spalte 15
.Cells(Pos, 15).Hyperlinks(1).Follow 'Öffnet das verlinkte Dokument
End If
End With
End If
Exit Sub
Fehler:
MsgBox "Artikel " & Target & " nicht in Datei " & m2Name & " gefunden."
End Sub
Private Function IsOpen(wbName As String) As Boolean
On Error Resume Next
IsOpen = Workbooks(wbName).Name <> ""
End Function
Gruß Mr. K.
|