alip1 (Normal User)
Pro
Messaggi: 139
Iscritto: 12/08/2019
|
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:
Codice sorgente - presumibilmente VB.NET |
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
|
|
Carlo (Member)
Guru
Messaggi: 1344
Iscritto: 29/01/2018
|
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 il 22/05/2020 alle 18:08
in programmazione tutto è permesso |
|
alip1 (Normal User)
Pro
Messaggi: 139
Iscritto: 12/08/2019
|
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 il 22/05/2020 alle 18:19 |
|
Carlo (Member)
Guru
Messaggi: 1344
Iscritto: 29/01/2018
|
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 il 22/05/2020 alle 20:48
in programmazione tutto è permesso |
|
alip1 (Normal User)
Pro
Messaggi: 139
Iscritto: 12/08/2019
|
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:
Codice sorgente - presumibilmente Plain Text |
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:
Codice sorgente - presumibilmente Plain Text |
non va a buon fine... ..InitialFileName mantiene il suo valore originale... sebbene la documentazione dica altro...
mi sembra un pò un mistero! Che ne pensi? |
|
Carlo (Member)
Guru
Messaggi: 1344
Iscritto: 29/01/2018
|
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 |
|
alip1 (Normal User)
Pro
Messaggi: 139
Iscritto: 12/08/2019
|
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.
|
|
|