Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

pulsante su maschera per cercare file e inserire il percorso relativo in un campo di una tabella

147 views
Skip to first unread message

giannirusso

unread,
Feb 18, 2013, 4:59:42 AM2/18/13
to
Buongiorno,
è possibile con un comando poter avere la finestra di apertura file e
dopo avere individuato un file (tipo una scansione di una fattura)
memorizzare il relativo percorso in un campo di una tabella?
Grazie
Gianni

M7a1x

unread,
Feb 18, 2013, 5:18:39 AM2/18/13
to
Ciao Gianni....
crea un modulo nuovo e incolla il seguente codice:

Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_PATHMUSTEXIST = &H800

Public Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustomFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Public Declare Function GetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (lpofn As OPENFILENAME) As Long

Public Sub ShowFile(frm As Form, fb As OPENFILENAME)
Dim fName As String
Dim result As Long
Dim path As String
path = "C:\"
With fb
.lStructSize = Len(fb) 'Size of the structure
.hwndOwner = frm.Hwnd 'Handle to window opening the dialog
.hInstance = 0 'Handle to calling instance (not
needed)
.lpstrFilter = "Tutti i file (*.*)" & vbNullChar & "*.*" &
vbNullChar _

'.lpstrCustomFilter is ignored -- unused string
.nMaxCustomFilter = 0
.nFilterIndex = 1 'Default filter is
the first one (Text Files, in this case)
.lpstrFile = Space(256) & vbNullChar 'No default
filename. Also make room for received path and _
filename of the
user's selection.
.nMaxFile = Len(.lpstrFile)
.lpstrFileTitle = Space(256) & vbNullChar 'Make room for
filename of the user's selection
.nMaxFileTitle = Len(.lpstrFileTitle)
.lpstrInitialDir = path & vbNullChar 'Initial directory
is C:\
.lpstrTitle = "Scelta File" & vbNullChar 'Title of file
dialog
.flags = OFN_PATHMUSTEXIST Or OFN_FILEMUSTEXIST Or
OFN_HIDEREADONLY
.nFileOffset = 0 'The rest of the
options aren't needed.
.nFileExtension = 0
'.lpstrDefExt is ignored -- unused string
.lCustData = 0
.lpfnHook = 0
'.lpTemplateName is ignored -- unused string
End With
result = GetOpenFileName(fb)
If result <> 0 Then
fName = Left(fb.lpstrFile, InStr(fb.lpstrFile, vbNullChar) -
1)
End If
End Sub

Ora all'inizio del codice (subito dopo Option Compare Database) della
maschera che contiene il pulsante incolla:
Dim fb As OPENFILENAME
Dim RetVal As Long

Adesso incolla questo codice sull'evento "clic" del pulsante della
maschera che ti aprirà la finestra di ricerca file:

Call ShowFile(Me, fb)
fName = Left(fb.lpstrFile, InStr(fb.lpstrFile, vbNullChar) - 1)
Me.tuocampo = fName

Saluti
M7a1x

giannirusso

unread,
Feb 19, 2013, 3:46:10 AM2/19/13
to
Il 18/02/2013 11:18, M7a1x ha scritto:
> Call ShowFile(Me, fb)
> fName = Left(fb.lpstrFile, InStr(fb.lpstrFile, vbNullChar) - 1)
> Me.tuocampo = fName

Ciao Max,
dunque ho provato a fare quello che mi hai indicato e per un po' ha
anche funzionato tanto che sono riuscito a cercare un file.
Adesso stranamente, perchè non mi pare di aver toccato nulla, invece mi
dice "variabile non definita" evidenziando fname.
Il problema potrebbe essere per come ho scritto il modulo non essendo io
un esperto.
Ho creato un nuovo modulo (non so se dovesse essere di classe o no) ed
ho incollato il codice che mi hai dato ed ho chiamato il modulo
"modulofattureclienti".
Poi nel codice della maschera che contiene il comando ho messo

Dim fb As OPENFILENAME
Dim RetVal As Long
dopo Option Compare Database

ed infine nel codice del comando (evento su click) ho messo

Call ShowFile(Me, fb)
fName = Left(fb.lpstrFile, InStr(fb.lpstrFile, vbNullChar) - 1)
Me.FileFattura = fName

Dove ho sbagliato?

Grazie
Gianni


M7a1x

unread,
Feb 19, 2013, 10:27:28 AM2/19/13
to
Salve Gianni.....
prova a eliminare "Option Explicit" che dovrebbe trovarsi in cima al
codice della maschera subito dopo (la riga sotto) a dove hai
incollato
> Dim fb As OPENFILENAME
> Dim RetVal As Long
e il problema dovrebbe risolversi.
Saluti
M7a1x

giannirusso

unread,
Feb 19, 2013, 2:44:30 PM2/19/13
to
> Salve Gianni.....
> prova a eliminare "Option Explicit" che dovrebbe trovarsi in cima al
> codice della maschera subito dopo (la riga sotto) a dove hai
> incollato
>> Dim fb As OPENFILENAME
>> Dim RetVal As Long
> e il problema dovrebbe risolversi.
> Saluti
> M7a1x

Grazie Max, adesso funziona. Sei esperto e gentile. Ti ringrazio.
Gianni

Pablitomf

unread,
Feb 21, 2013, 9:54:29 AM2/21/13
to
giannirusso <giannirus...@nospam.it> ha scritto:
per completezza affinche' tu sappia...

Option Explicit

potevi anche lasciarlo... ma lasciandolo, l'interprete del sistema si aspetta
che tu gli abbia Dichiarato tutte le variabili che usi, cosa che non hai fatto
ad es. con "fName"...

avessi scritto :
Dim fName as String

tutto sarebbe stato giusto (sempre che solo questa non fosse stata dichiarata) ;)

--
------------
Pablitomf
Napoli sempre nel "Q"uore!
"mammasantissima" si nasce, non si diventa.

TheSpaceCowboy :
Britos deve recuperare per arrivare in forma al prossimo
infortunio - 24/10/12

M7a1x

unread,
Feb 21, 2013, 3:56:25 PM2/21/13
to
On 21 Feb, 15:54, "Pablitomf" <pablit...@hotmail.it> wrote:
> giannirusso <giannirusso-nos...@nospam.it> ha scritto:
Ciao Pabli
Come si suol dire.... il fine giustifica i mezzi.
Distinti Saluti
M7a1x
0 new messages