none
Datei aus Access per VBA öffnen

    Frage

  • Hallo Zusammen,

     

    bisher habe ich mit folgender Funktion eine beliebige Datei aus Access heraus geöffnet:

     

    Function VerzeichnisÖffnen(strVerzeichnispfad As String)

    If Not IsNull(strVerzeichnispfad) Then

    Shell "c:\windows\explorer.exe /e," & strVerzeichnispfad, vbNormalFocus

    'Shell "c:\windows\explorer.exe " & strVerzeichnispfad, vbNormalFocus

    Else

    MsgBox "Bitte geben Sie zuerst einen Verzeichnispfad an.", vbOKOnly, "Pfad fehlt"

    End If

    End Function

    Das geht nur jetzt nicht mehr. Keine Ahnung wieso. strVerzeichnispfad beinhaltet einen Pad nach dem Schema:

     

    \\computer\verzeichnis\unterverzeichnis\datei.txt

    Ich bin sicher, dass das schon mal ging. Habe Access 2010 unter Windows 7.

     

    Kann mir jemand helfen? Gibt es einen anderen Weg eine Datei zu öffnen?

     

    Vielen Dank für die Hilfe

     

    Viele Grüße

     

    Patrick

     

     

    Freitag, 16. September 2011 14:45

Antworten

  • Hallo Patrick,
    Man konnte auch statt VB Shell Funktion die API ShellExecute Funktion verwenden:
    Option Compare Database
    Option Explicit
    
    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 Command0_Click()
        Dim strPath As String
        
        strPath = "\\path\path\bogdan\test.xlsx"
        ShellExecute 0, "open", strPath, "", "", 1
    End Sub
    
    

     
    Grüße,
    Bogdan

    Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt
    Montag, 19. September 2011 10:35
    Moderator
  • Hallo Bogdan

    Bogdan Petru Roiu wrote:

    Man konnte auch statt VB/Shell/Funktion die API /ShellExecute
    <http://msdn.microsoft.com/en-us/library/bb776886(v=VS.85).aspx>/Funktion
    verwenden

    Oder dann halt ganz konventionell mit Access Bordmitteln

    Application.FollowHyperlink strDateiname, , True, False

    Gruss
    Henry

    Dienstag, 20. September 2011 06:36

Alle Antworten

  • Zum Öffnen der Datei reicht es, diese direkt per Shell anzusprechen (Shell DateiPfad). Solange der Dateityp registriert ist recith das.

    Deine Pfadangabe ist nur dann ein korrekter Pfad zu einer Datei, wenn du ein entsprechendes Share freigegeben hast. Der UNC-Pfad besteht nämlich korrekterweise aus

    \\ComputerName\ShareName[\SubFolder][\FileName[.Extension]]
     Die weitere Frage ist, ob das Share sowie der Pfad und/oder die Datei an sich noch da sind.

    Da du es unter Windows 7 machst, kann eventuell noch die Virtualisierung rein spielen, sofern die Datei lokal ist.

    Freitag, 16. September 2011 14:55
    Moderator
  • Hallo Stefan,

     

    vielen Dank für die schnelle Antwort. Das (oder der?) Share steht da drin. Also das Laufwerk was auf dem Server freigeben ist.

     

    Wenn ich den ganzen Pfad einfach in den Explorer kopiere öffnet die Datei auch normal. Nur eben nicht (mehr) über meine Funktion.

    Freitag, 16. September 2011 15:08
  • Wenn du den Pfad als Parameter angibst, muss er in "PFAD" stehen, wenn er Leerzeichen entält. Außerdem brauchst du das C:\Windows nicht, um explorer.exe aufzurufen.
    Freitag, 16. September 2011 15:26
    Moderator
  • Hallo Patrick,
    Man konnte auch statt VB Shell Funktion die API ShellExecute Funktion verwenden:
    Option Compare Database
    Option Explicit
    
    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 Command0_Click()
        Dim strPath As String
        
        strPath = "\\path\path\bogdan\test.xlsx"
        ShellExecute 0, "open", strPath, "", "", 1
    End Sub
    
    

     
    Grüße,
    Bogdan

    Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt
    Montag, 19. September 2011 10:35
    Moderator
  • Hallo Bogdan

    Bogdan Petru Roiu wrote:

    Man konnte auch statt VB/Shell/Funktion die API /ShellExecute
    <http://msdn.microsoft.com/en-us/library/bb776886(v=VS.85).aspx>/Funktion
    verwenden

    Oder dann halt ganz konventionell mit Access Bordmitteln

    Application.FollowHyperlink strDateiname, , True, False

    Gruss
    Henry

    Dienstag, 20. September 2011 06:36