Newsgroup: it.comp.lang.visual-basic
Titolo: Maschera per caricare un file in visual basic for application

Buon giorno a tutti...
Vi spiego il problema...
Ho un programma che utilizza come variabile un nome di un file. Questo
nome deve essere inserito dall'utente.
Siccome questo nome è abbastanza complicato l'utente dovrebbe segnarsi
con precisione questo nome... Per risolvere questo problema ho pensato
ad una maschera dipo quella di windows che viene usata per cercare ed
aprire un file. Es. Se si va in word si scegle apri file compare
questa maschera che è un'esplora risorse di windows e permette di
cercare e apire il file.
Solo che nn mi serve apire quel file ma solo mettere in una varibile
il nome del file trovato. E' possibile o è troppo complicato?
Grazie a tutti, ciaoo

dariol86 ha scritto...


Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias
"GetOpenFileNameA" ( _
pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter 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
Private Sub Form_Load()
    Dim OFName As OPENFILENAME, Variabile As String
    OFName.lStructSize = Len(OFName)
    OFName.hwndOwner = hWnd
    OFName.hInstance = App.hInstance
    OFName.lpstrFilter = "Text Files (*.txt)" + Chr$(0) + "*.txt" + Chr$(0)
+ "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0) '<--- Opzionale
    OFName.lpstrFile = Space$(254)
    OFName.nMaxFile = 255
    OFName.lpstrFileTitle = Space$(254)
    OFName.nMaxFileTitle = 255
    OFName.lpstrInitialDir = "C:\" '<--- Opzionale
    OFName.lpstrTitle = "Nome file da aprire" '<--- Opzionale
    OFName.flags = 0
    If GetOpenFileName(OFName) Then
        Variabile = Trim$(OFName.lpstrTitle)
    End If
End Sub
--
Ciao Fede
By Chicco Production
http://www.webalice.it/bychicco/


Osti... troppo complicato... grazie cmq della risposta...
Ho un'altro problema...
sto usando questo codice per importare un file nel mio foglio
excell... funziona alla perfezione se inserisco il nome corretto, ma
se sbaglio a scrivere il nome mi va in errore.. vorrei inserire un
controllo che mi stampi a video un messaggio nel caso il nome inseriro
sia errato... coma faccio?
Set connessione = Sheet1.QueryTables.Add( _
        Connection:=stringa3, _
        Destination:=Sheet1.Cells(1, 1))
 With connessione
        .Name = "PROVA_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        '.Refresh BackgroundQuery:=False
 End With
pensavo di fare un controllo su 'connessione' ma non so che controlli
fare. Perchè in stringa3 c'è l'indirizzo dove è il file quindi se non
trova il file 'connessione' nn va a buon fine e volevo controllare
appunto quello

appunto quello.
if len(dir(stringa3))>0 then
    'Qui inserisci il tuo codice
else
    msgbox "Errore!" & vbcrlf & "Impossibile trovare il file:" & vbcrlf &
stringa3
end if



GRANDISSIMO!! Funziona... grazie mille... ero fermo per sta
caz.zata...
grazie, ciaoo

Ciao. VB6 o VB.Net? Comunque la risposta riguarda VB6.

Non è per niente complicato, ed esiste un controllo apposito: devi
utilizzare la finestra Apri di Windows.
Windows (non Word: tutti i programmi hanno la stessa, incluso Excel, Access,
PowerPoint, FrontPage, CorelDRAW, Dreamweaver, Blocco note....) mette a
disposizione una finestra di dlialogo che a seconda dell'utilizzo si chiama
Apri, Salva con nome, Stampa, o anche in altro modo. In VB questa finestra
si può utilizzare nei propri programmi aggiungendo un controllo CommonDialog
alla form in cui vuoi utilizzarla.
Per poter aggiungere il controllo CommonDialog devi andare nel menu
Progetto/Componenti ed aggiungere il segno di spunta su Microsoft Common
Dialog Control 6.0. Adesso nella casella degli strumenti è disponibile
l'icona CommonDialog, e la devi trascinare nella form dove ti serve. Il
controllo CommonDialog è nascosto durante la fase di esecuzione, quindi puoi
posizionare l'icona dove ti pare.
Per utilizzare il controllo CommonDialog devi impostare anzitutto come
aprirlo, se come Apri, come Salva con Nome, come Stampa, come Scegli colore,
o altro. Questo si fa nel codice con l'esecuzione di uno dei metodi Show
disponibili. A te interessa il metodo ShowOpen. Quando esegui il metodo
ShowOpen la proprietà FileName del controllo restituisce una stringa con il
nome e il percorso del file utilizzato, per cui tu puoi assegnare questa
stringa alla tua variabile, esattamente come hai chiesto.
Inoltre per personalizzare l'apertura del file puoi impostare certi
parametri della finestra di dialogo, come ad esempio chiedere di aprire solo
i file con estensione .doc, o quelli con estensione .doc e .txt, o tutti i
file. Questo si imposta tramite una stringa nella proprietà Filter.
Ti posto un esempio di codice. Questo codice viene eseguito alla pressione
di un pulsante chiamato btnApri, il controllo CommonDialog si chiama dlg1, e
diciamo che la variabile che deve contenere il nome del file si chiama
strMioFile. Come vedi tutta l'esecuzione risiede dentro un'unica routine.
Option Explicit
Dim strMioFile As String
Private Sub btnApri_Click()
On Error GoTo ErrRoutine
    With dlg1
        .DialogTitle = Titolo & "Seleziona percorso"
        .Filter = "Tutti i file" & "|*.*|" _
            & "Documenti di Word (*.doc)" & "|*.doc|" _
            & "Tutti i documenti di Word (*.doc, *.rtf)" & "|*.doc; *.rtf|" _
            & "Rich Text Format (*.rtf)" & "|*.rtf|" _
            & "Solo testo" & "|*.txt|"
        .FilterIndex = 2
        .CancelError = True
        .Flags = cdlOFNLongNames
        .ShowOpen
        ' becca il path del file, e lo scrive nella variabile
        strMioFile = .FileName
    End With
ExitRoutine:
    Exit Sub
ErrRoutine:
    If Err.Number = 32755 Then ' è stato scelto Annulla (CancelError=True)
        strMioFile = vbNullString
        Resume ExitRoutine
    End If
End Sub
Puoi trovare mille altri esempi di utilizzo del controllo CommonDialog, e
puoi approfondire da solo le varie proprietà e parametri.
Spero sia utile. Ciao.
PS: (ancora lui?....)
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Osti... troppo complicato... grazie cmq della risposta...
c'e' di peggio  prova a copiare questo sul notepad e salvalo
con estensione vbs
Dim oCommonDialog
   Dim strFileName
   Set oCommonDialog = WScript. _
   CreateObject("MSComDlg.CommonDialog")
   oCommondialog.MaxFileSize = 1024
   oCommondialog.FileName = "default.txt"
   oCommonDialog.Flags = &H1000 + &H800
   oCommonDialog.Filter = "All files (*.*)|*.*"
   oCommonDialog.DialogTitle = "Select a file:"
   oCommonDialog.InitDir = "c:\documenti"
   oCommonDialog.CancelError = True
   On Error Resume Next
      oCommondialog.ShowOpen
      If err.number <> 0 Then
         strFileName = ""
      Else
         strFileName = oCommondialog.FileName
      End If
   On Error Goto 0
   msgbox strFileName
'Copia incolla su notepad e salva con estensione .vbs
'tutti i file (*.*)  poi ci clicchi sopra. (per esempio Test.vbs)
'se ti da' errore disattiva l'antivirus
PS:
http://www.noidelweb.it/ipod/migliori/quotare.htm