Oppure

Loading
22/05/20 15:22
alip1
Buon di scusatemi se non ho postato nel forum corretto.

Ho un piccolo problema VBA in Access. Ho realizzato questa routine per consentire ad un utente dell'app di poter scegliere un file immagine (bmp, o jpg, o ico..) ed ho utilizzato FileDialog:

 Public Function FotoOpen(DirStart As String, SubDir As String) As String
    ' Questa procedura apre il file dialog per la selezione della foto

    Dim PathDir As String
    PathDir = DirStart

   If SubDir <> "" Then
      PathDir = PathDir & "\" & SubDir & "\"
   End If

   '  Dim fDialog As Office.FileDialog
   Dim Fp As Office.FileDialog
   Set Fp = Application.FileDialog(msoFileDialogFilePicker)

   With Fp
      .Title = "Selezionare file immagine"
      .ButtonName = "Conferma"
      .InitialView = msoFileDialogViewPreview
      .Filters.Clear
      .Filters.Add "Tutti i Files (*.*)", "*.*"
      .Filters.Add "Images Files (*.jpg)", "*.jpg" '
      .Filters.Add "Images Files (*.bmp)", "*.BMP"
      .Filters.Add "Images Files (*.png)", "*.png"
      .Filters.Add "Images Files (*.ico)", "*.ico"
      .FilterIndex = 2
      .AllowMultiSelect = False
      .InitialView = msoFileDialogViewPreview
      .InitialFileName = PathDir

      If .Show = -1 Then
        FotoOpen = CStr(.SelectedItems.Item(1))
      Else
         Beep
       '  MsgBox "La selezione è stata annullata", vbInformation, "Informazione"
      End If

    End With
  Set Fp = Nothing
 End Function


Ora il Dialog non tiene conto della DirIniziale settata, ma apre sempre nella Dir Documents dell'utente..
Come mai? Dov'é l'errore?
Grazie a tutti
aaa
22/05/20 15:52
Carlo
With Fp
.Title = "Selezionare file immagine"
.ButtonName = "Conferma"
.InitialView = msoFileDialogViewPreview
.Filters.Clear
.Filters.Add "Tutti i Files (*.*)", "*.*"
.Filters.Add "Images Files (*.jpg)", "*.jpg" '
.Filters.Add "Images Files (*.bmp)", "*.BMP"
.Filters.Add "Images Files (*.png)", "*.png"
.Filters.Add "Images Files (*.ico)", "*.ico"
.FilterIndex = 2
.AllowMultiSelect = False
.InitialView = msoFileDialogViewPreview
.InitialFileName = PathDir

non vedo: .InitialDirectory
credo che esista anche in VBA
se non ci fosse, controlla se il file esiste prima di darlo in pasto a .InitialFileName
Ultima modifica effettuata da Carlo 22/05/20 16:08
in programmazione tutto è permesso
22/05/20 16:16
alip1
Postato originariamente da Carlo:

With Fp
.Title = "Selezionare file immagine"
.ButtonName = "Conferma"
.InitialView = msoFileDialogViewPreview
.Filters.Clear
.Filters.Add "Tutti i Files (*.*)", "*.*"
.Filters.Add "Images Files (*.jpg)", "*.jpg" '
.Filters.Add "Images Files (*.bmp)", "*.BMP"
.Filters.Add "Images Files (*.png)", "*.png"
.Filters.Add "Images Files (*.ico)", "*.ico"
.FilterIndex = 2
.AllowMultiSelect = False
.InitialView = msoFileDialogViewPreview
.InitialFileName = PathDir

non vedo: .InitialDirectory
credo che esista anche in VBA
se non ci fosse, controlla se il file esiste prima di darlo in pasto a .InitialFileName


ma prende solo .InitialFileName = PathDir
e PathDir come vedi dal codice contiene una Dir non un filename... che non saprei. Proprio perché non solo quale vuole mettere glielo vado a far cercare... in verità dovrebbe andare ad aprirsi sulla cartella che gli passo! Almeno così dice la documentazione....
Ultima modifica effettuata da alip1 22/05/20 16:19
aaa
22/05/20 18:42
Carlo
vedo che fai anche dei controlli

If SubDir <> "" Then
PathDir = PathDir & "\" & SubDir & "\"
End If

Per controllare se stai passando un percorso che esiste controlla il contenuto della variabile PathDir in runtime.
E' molto facile sbagliare.
Ultima modifica effettuata da Carlo 22/05/20 18:48
in programmazione tutto è permesso
26/05/20 16:36
alip1
Postato originariamente da Carlo:

vedo che fai anche dei controlli

If SubDir <> "" Then
PathDir = PathDir & "\" & SubDir & "\"
End If

Per controllare se stai passando un percorso che esiste controlla il contenuto della variabile PathDir in runtime.
E' molto facile sbagliare.



Facendo il debug.print ottengo questi valori:

PathDir H:\Sviluppo\SVILUPPO_VBA\TEMP4YOU\bmp\
         .InitialFileName C:\Users\Antonio Lipone\OneDrive\Documenti\


da cui si vede che il PathDir è corretto. Ma si rileva pure che l'assegnazione:
     .InitialFileName=PathDir


non va a buon fine... ..InitialFileName mantiene il suo valore originale... sebbene la documentazione dica altro...:heehee:
mi sembra un pò un mistero! Che ne pensi?
aaa
26/05/20 20:35
Carlo
Postato originariamente da alip1:
mi sembra un pò un mistero! Che ne pensi?


Non ti so aiutare, non ho mai usato VBA, però il comando: .InitialFileName dovrebbe funzionare.
Fai una controprova, da runtime apri filedialog, naviga fino a trovare il file nella cartella H:\Sviluppo\SVILUPPO_VBA\TEMP4YOU\bmp\
una volta selezionato il file in questione e dato l'ok, confronta il percorso restituito da Fp.SelectedItems, con il tuo.

in programmazione tutto è permesso
27/05/20 10:08
alip1
Postato originariamente da Carlo:

Postato originariamente da alip1:
mi sembra un pò un mistero! Che ne pensi?


Non ti so aiutare, non ho mai usato VBA, però il comando: .InitialFileName dovrebbe funzionare.
Fai una controprova, da runtime apri filedialog, naviga fino a trovare il file nella cartella H:\Sviluppo\SVILUPPO_VBA\TEMP4YOU\bmp\
una volta selezionato il file in questione e dato l'ok, confronta il percorso restituito da Fp.SelectedItems, con il tuo.



Grazie Carlo il problema era più semplice . Mi hanno cambiato la subDir da BMP a IMG per cui non la trovava.. ed .InitialFileName rimaneva settato su qyuello di default... Risolto
Grazie per la tua disponibilità. Buon lavoro:pat::pat::pat::pat:
aaa