Juli 14, 2020, 21:02:35

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Dateien per FileDialog anhängen

Begonnen von mad, Juni 11, 2020, 10:05:50

⏪ vorheriges - nächstes ⏩

mad

Juni 11, 2020, 10:05:50 Letzte Bearbeitung: Juni 11, 2020, 10:23:14 von mad
Hallo Zusammen,

derzeit lege ich diverse Anhänge (.xls, .doc, .pdf, .zip,.etc.) direkt in das Anlage-Feld meiner DB.
Das kostet natürlich sehr viel Speicherplatz. Von DF6GL habe ich den Tip bekommen das es da eine bessere Lösung per FileDialog gibt, wo die Dateien auf dem Laufwerkverzeichnis bleiben.

Nun habe ich die letzten Tage schon einiges gelesen und ausprobiert.
Nun habe ich im Detailbereich des UFs eine Botton "btnDatAnhang" angelegt.

Aktueller Code auf Basis: https://www.access-o-mania.de/forum/index.php?topic=21381.0
Private Sub btnDatAnhang_Click()
 
   ' Requires reference to Microsoft Office 11.0 Object Library.

Dim fDialog As Office.filedialog, varFile As Variant

   Set fDialog = Application.filedialog(msoFileDialogFilePicker)
   With fDialog
      .AllowMultiSelect = True
      .Title = "Please select one or more files"

      ' Clear out the current filters, and add our own.
      .Filters.Clear
      .Filters.Add "Access Databases", "*.MDB"
      .Filters.Add "Access Projects", "*.ADP"
      .Filters.Add "All Files", "*.*"

      ' Show the dialog box. If the .Show method returns True, the
      ' user picked at least one file. If the .Show method returns
      ' False, the user clicked Cancel.
      If .Show = True Then

         'Loop through each file selected and add it to our list box.
        ' For Each varFile In .SelectedItems
         '   Me.FileList.AddItem varFile
        ' Next

      Else
         MsgBox "You clicked Cancel in the file dialog box."
      End If
   End With

End Sub

Läuft zumindestens nicht auf Fehler!

Aber wie bekomme ich die Datei/Link in mein Feld "AnhDoku_VollDateiName"?

Was habe ich als Basis:
Ein HF "Dokumente" "tblDokumente" als Einzelformular, ein UF "UFDokumentAnhaende" "tblDokuAnhaenge" als Endlosformular mit diversen Feldern, siehe Beziehungsfenster.

unter Extras -> Verweise habe ich "Microsoft Office 16.0 Object Library" bereits angehakt.

Wie müsste ich den Code erweitern?


Gruss
mad

DF6GL

Hallo,


.
.
     .AllowMultiSelect = False.
.


         'Loop through each file selected and add it to our list box.
        ' For Each varFile In .SelectedItems
         '   Me.FileList.AddItem varFile
        ' Next

Me!AnhDoku_VollDateiName = .SelectedItems(1)

.
.


mad

Juni 11, 2020, 12:47:33 #2 Letzte Bearbeitung: Juni 11, 2020, 12:53:53 von mad
Danke für die schnelle Antwort.
Funktioniert soweit.

Zwei Fragen hätte ich aber noch.
1. Wie und an welcher Stelle im Code könnte ich den Pfad vordefinieren? So das der Anwender nicht suchen muß, sondern bereits im richtigen Verzeichnis steht.

2. Jetzt steht im Textfeld "AnhDoku_VollDateiName" der gesamte Pfad incl. Dateiname, wie gewünscht. Wie kann ich jetzt die Datei zu einem späteren Zeitpunkt wieder öffnen/aufrufen?
Aktuell habe ich den Feldtyp in "Link" umgestellt, ist das Richtig, oder müßte das anders gemacht werden?

Gruss
mad

mad

Juni 11, 2020, 12:55:38 #3 Letzte Bearbeitung: Juni 11, 2020, 13:02:20 von mad
Ich glaub ich habs gefunden:

...
' Clear out the current filters, and add our own.
      .InitialFileName = "C:\Users\.....\......"
      .Filters.Clear
      .Filters.Add "Access Databases", "*.MDB"
...

Aber das mit dem umstellen auf "Link" klapp doch noch nicht.
Ich kann die Datei erste öffnen wenn vorher file:///C:\.... steht.

Gruss
mad

DF6GL

Juni 11, 2020, 16:42:54 #4 Letzte Bearbeitung: Juni 11, 2020, 16:52:15 von DF6GL
Hallo,


wieso 
Zitat.Filters.Add "Access Databases", "*.MDB"
? Willst Du DB-Dateien öffnen?


eher so:

Zitat
.
.
        .Filters.Add "Bilder", "*.png;*.jpg;*.tif"
        .Filters.Add "Dokumente", "*.doc;*.docx;*.xls;*.xlsx;*.pdf"
.
.


Zum Anzeigen von Bildern kannst Du ein Bild-Steuerelement einbauen und in dessen Steuerelementinhalt  den Namen des Tabellenfeldes ("AnhDoku_VollDateiName")  schreiben

Zum Öffnen der Dateien kann "FollowHyperlink"  oder "ShellExecute" benutzt werden.
Sub btnOpenFile_Click()
Followhyperlink  "File://" & Me!AnhDoku_VollDateiName
End Sub


Der Link auf dem Textfeld wird entfernt.

mad

Hallo,

danke funktioniert super.

Zitat? Willst Du DB-Dateien öffnen?

Habe es so gelöst (anzeigen aller Dateien):
Zitat'.Filters.Add "Access Databases", "*.MDB"
'.Filters.Add "Access Projects", "*.ADP"
  .Filters.Add "All Files", "*.*"


Jetzt kommt aber mein nächstes Anliegen: Alle Anhänge (Feldtyp "Anlage") aus der Tabelle exportieren und in meine neue "tblDokuAnhaenge" importieren.
Dazu würde ich aber einen neuen Beitrag einstellen.

Danke
mad

mad

Hätte nochmals eine Frage,

wie beschrieben kann ich den ganzen Pfad incl. Dateiname an das Feld übergeben:
ZitatMe!AnhDoku_VollDateiName = .SelectedItems(1)


Wie geht das nur für den Dateinamen?
ZitatMe!AnhDoku_Dateiname = .???????


Gruss
mad

Beaker s.a.

s = Me!AnhDoku_VollDateiName
Me!AnhDoku_Dateiname = Right(s, Len(s) - InStrRev(s, "\"))
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

mad