Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Carl am Januar 16, 2021, 22:47:33

Titel: Datei aus Endlosformular heraus öffnen
Beitrag von: Carl am Januar 16, 2021, 22:47:33
Liebe Ratgebende, ein gesundes Jahr 2021.

Mit dem folgenden Code öffne ich per Klick Dateien direkt aus dem Formular. Wenn es sich um Word-Dateien handelt, werden die ohne Zögern geöffnet.

Wenn es sich um pdf handelt, kommt vorher ein verstörendes Fenster das davor warnt, dass nun ein Viewer einer Drittpartei angezeigt wird, in dem Fall Adobe.

Gibt es eine Möglichkeit, den PDF anzeigen zu lassen, ohne dass das Fenster kommt?

Private Sub Instruktion_Click()
Dim strFN2 As String
On Error GoTo Err_Handler
 strFN2 = Nz(Me!AufgabentypLink, "")
If Dir(strFN2) <> "" Then
     FollowHyperlink strFN2
Else
    Application.FollowHyperlink Me!Pfad1
    'MsgBox "Blah 1", 64, "Blah2"
End If

Exit_Err_Handler:
     Exit Sub
Err_Handler:

MsgBox "Fehler " & Err.Number & " " & Err.Description & " ist aufgetreten"
          Resume Exit_Err_Handler
End Sub
Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: steffen0815 am Januar 17, 2021, 00:26:31
Hallo,
nutze ShellExecute() (https://dbwiki.net/wiki/VBA_Tipp:_Anwendung_mit_ShellExecute_starten) statt FollowHyperlink.
Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: Carl am Januar 18, 2021, 20:18:25
okay, danke.

Wie wird das in diesen Code eingesetzt? Er sagt bei mir "Datei nicht" gefunden.

Carl
Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: steffen0815 am Januar 19, 2021, 07:39:13
Hallo,
wie der Code eingesetzt wird ist doch im Link ausführlich beschrieben.

Zeige bitten deinen Code.
Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: Carl am Januar 19, 2021, 14:26:54
Zitat von: steffen0815 am Januar 19, 2021, 07:39:13Hallo,
wie der Code eingesetzt wird ist doch im Link ausführlich beschrieben.

Zeige bitten deinen Code.

Ich wollte das so lassen, weil der Link aus einem Feld abgefragt wird.

Dim strFN2 As String
On Error GoTo Err_Handler
 strFN2 = Nz(Me!AufgabentypBeispielLink, "")
If Dir(strFN2) <> "" Then
     'FollowHyperlink strFN2
     Call ShellExecute(0, "open", "strFN2", ""), vbNullString, vbNullString, vbMaximizedFocus)
Else
    Application.FollowHyperlink Me!Pfad1
    'MsgBox "Dieses Beispiel ist nicht aufrufbar!", 64, "Instruktion nicht vorgesehen:"
End If

Exit_Err_Handler:
     Exit Sub
Err_Handler:

MsgBox "Fehler " & Err.Number & " " & Err.Description & " ist aufgetreten"
          Resume Exit_Err_Handler
Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: steffen0815 am Januar 19, 2021, 14:34:54
Hallo,
versuche es so:Call ShellExecute(0, "open", strFN2, vbNullString, vbNullString, vbMaximizedFocus)
Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: Carl am Januar 19, 2021, 14:44:20
Zitat von: steffen0815 am Januar 19, 2021, 14:34:54Hallo,
versuche es so:Call ShellExecute(0, "open", strFN2, vbNullString, vbNullString, vbMaximizedFocus)

Hier gibt er die Fehlermeldung aus: Sub oder Function nicht definiert und markiert "Call ShellExecute" dabei.

Carl
Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: steffen0815 am Januar 19, 2021, 14:47:48
Hallo,
du musst natürlich auch den Code aus dem Link noch in ein allgemeines Modul einfügen.
Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: Carl am Januar 19, 2021, 14:57:25
Wieso reicht es nicht, wenn er mit in dem Sub ist?

Carl
Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: steffen0815 am Januar 19, 2021, 15:07:43
Hallo,
ZitatWieso reicht es nicht, wenn er mit in dem Sub ist?
Weil dann die Fehlermeldung kommt
ZitatSub oder Function nicht definiert


ShellExecute() ist keine VBA-Prozedur, sondern eine benutzerdefinierte Prozedur ist, welche erst definiert werden muss.
Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: Carl am Januar 19, 2021, 17:52:49
okay!

Und sag mal, wie kann ich bei einem Listenfeld mit der Datensatzherkunft:

SELECT [abfAufgabentypFilter].[IDAufgabentyp], [abfAufgabentypFilter].[AufgabentypName] FROM abfAufgabentypFilter ORDER BY [AufgabentypName];
das so gestalten, dass im angezeigten Listenfeld vor den Einträgen jeweils das selbe Wort steht? Zum Beispiel "Typ:"

Konkret werden jetzt die Einträge aus [AufgabentypName] angezeigt, aber es soll "Typ:" vor jedem Namen stehen. Es hatte hier schonmal jemand diese Funktion gezeigt, aber ich finds leider nicht mehr.

Carl

Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: steffen0815 am Januar 19, 2021, 19:31:48
Hallo Carl,
was hat diese Frage mit dem Thema ShellExecute zu tun?
SELECT [abfAufgabentypFilter].[IDAufgabentyp], 'Typ:' & [abfAufgabentypFilter].[AufgabentypName] FROM abfAufgabentypFilter ORDER BY [AufgabentypName];
Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: Carl am Januar 21, 2021, 08:18:45
Vielen Dank für Deine Antworten, die haben mir sehr geholfen.

Ich habe noch eine damit in Zusammenhang stehende Frage: Kann ich bei einer Schaltfläche, die eine Datei aufruft, von dieser Schaltfläche prüfen lassen, ob der Link beim Klick funktionieren WÜRDE, und wenn nein, die Schaltfläche farblich eingrauen? Also wenn die Datei nicht vorhanden ist, soll auch der Button grau sein oder auch ausgeblendet. Hast Du dafür vielleicht mal ein Beispielcode? Ich finde nicht, wonach ich suchen soll.

Carl

Titel: Re: Datei aus Endlosformular heraus öffnen
Beitrag von: steffen0815 am Januar 21, 2021, 09:02:26
Hallo,
in Kompaktschreibweise so:
me.Instruktion.enabled = CreateObject("Scripting.FileSystemObject").FileExists(strFN2)