Microsoft Excel

Herbers Excel/VBA-Archiv

Excelverknüpfung öffnen

Betrifft: Excelverknüpfung öffnen von: Peter Egloff
Geschrieben am: 19.08.2014 19:02:32

Hallo Zusammen
Leider schaff ich es nicht alleine (WEB)
Ich habe eine Verknüpfung in einem Order, die ich zuerst abfragen will, wie sie genau heisst und überhaupt vorhanden ist, danach möchte ich sie gerne öffnen.
Hier mal mein (Web) Code zum öffnen

Sub X_Aufruf()
Dim z
z = Aufruf
End Sub
Function Aufruf()
Dim x
x = Shell("Start ""C:\Users\Peter\_1-Peter\TMP\Coop.lnk""")
End Function
Leider bekomme ich die Fehlermeldung "Datei nicht gefunden" obwohl sie vorhanden ist.
Wer kann mir helfen
lieben Dank
Pepi

  

Betrifft: AW: Excelverknüpfung öffnen von: Frank
Geschrieben am: 20.08.2014 09:03:49

Hallo Peter,

zwei Dinge fallen mir da auf:
1) Syntax lt. XL-Hilfe: Shell(pathname[,windowstyle])
Als erster Parameter wird der Dateiname erwartet, als zweites, optional die Angabe zum Fenster. Parameter werden durch Kommata getrennt. Der Eintrag "Start " aus Deinem Code ergibt so keinen Sinn.
2) Die Shell-Funktion führt ein ausführbares Programm aus. '.lnk' gehört da m.E. nicht dazu. Also auch ohne den '"Start "' Eintrag wirst Du eine Fehlermeldung erhalten - sinngemäss 'ungültiges Argument'.

Grüsse,
Frank



  

Betrifft: AW: Excelverknüpfung öffnen von: Peter Egloff
Geschrieben am: 20.08.2014 09:43:33

Lieber Frank
Vielen Dank für Deine Antwort - leider kann ich damit nicht viel anfangen, weil ich den Fehler nicht sehe und die Syntax nicht verstehe.
Es würde mich auch interessieren, wie ich den Pfad hinter der Verknüpfung ausfindig machen kann.
mfg Pepi


  

Betrifft: Was genau hast Du vor? von: Frank
Geschrieben am: 20.08.2014 10:43:05

Hallo Peter,

Wichtig wäre, zu wissen, was Du mit der Verknüpfung vor hast. Warum willst Du auf die Verknüpfung zugreifen und nicht auf die Datei selbst, auf die die Verknüpfung verweist? Was ist das für eine Datei? Soll sie in einer eigenen Application (IE, Word etc) gestartet werden? Willst Du den Inhalt ins XL importieren? Hilft Dir vielleicht schon HYPERLINK im XL (verweist auf externe Dateien und öffnet diese mit der zugehörigen Application)?

Ansonsten ist Dateihandling über VBA schon nicht mehr unbedingt was für Anfänger. Stichpunkte für die Suche in der Online-Hilfe des VBA-Editors: GetFile, GetAbsolutePath, GetFolder.

Es würde mich auch interessieren, wie ich den Pfad hinter der Verknüpfung ausfindig machen kann.
Windowsexplorer öffnen, Rechtsklick auf die .lnk-Datei, 'Eigenschaften' (letzter Eintrag in Pop-Up-Menü), Reiter Verknüpfung - 'Ziel:'
Da erfährst Du, wohin der Link verweist.

Grüsse,
Frank


  

Betrifft: AW: Was genau hast Du vor? von: Peter Egloff
Geschrieben am: 20.08.2014 13:43:14

Hallo Frank
Du hast dir ja ganz viel Mühe gegeben um meine Frage zu beantworten - vielen Dank.
Klar kann ich auf die Originaldatei zugreifen - es kann eben sein, dass die ihren Pfad ändert.
Da die Datei auf einem Server liegt kann der Pfad je nach PC-Konfiguration: N:\Verkauf\... oder eben mit \\xx...\Verkauf\.... beginnen. Diesen Unterschied muss ich zuerst auswerten, sonst bockt das Marko später. Deshalb wäre das Auslesen des Pfades toll - das über die Eigenschaften habe ich auch rausgefunden - leider schreibt der Makorrecorder dabei nicht mit. Ja, vielleicht gibt es doch eine Lösung.
vielen Dank
Pepi


  

Betrifft: AW: Was genau hast Du vor? von: Mullit
Geschrieben am: 20.08.2014 15:42:03

Hallo,

da mußt Du dich ein bißchen durch die Objekte hangeln:
Wenn Du nur eine Verknüpfung in dem Ordner hast, dann so:

Option Explicit

Public Sub prcOpenLink()
    Dim objShell As Object
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim strPath As String
    strPath = "C:\Users\Peter\_1-Peter\TMP"
    Set objShell = CreateObject("Shell.Application")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(strPath)
    For Each objFile In objFolder.Files
       With objFile
           If objFSO.GetExtensionName(.Path) = "lnk" Then
             objShell.ShellExecute .Name, "", strPath, "open", 1
             Set objFile = Nothing
             Exit For
           End If
       End With
    Next
    Set objFSO = Nothing
    Set objFolder = Nothing
    Set objShell = Nothing
End Sub




VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

sonst über den Namen:
'...
For Each objFile In objFolder.Files
    With objFile
        If .Name = "Coop.lnk" Then
           objShell.ShellExecute .Name, "", strPath, "open", 1
           Set objFile = Nothing
           Exit For
         End If
     End With
 Next
'...

Gruß,


 

Beiträge aus den Excel-Beispielen zum Thema "Excelverknüpfung öffnen"