VBA / VB6 - Vælg en liste over filer med Windows Stifinder

Vælg en liste over filer (eller kun en) med API: GetOpenFileName.

En forenklet funktion ved hjælp af Windows Stifinder.

Denne kode fungerer også i VBA, forudsat at du justerer kontrollerne.

Du kan ændre

  • titlen
  • Retur af en enkelt fil ved at fjerne konstant OFN_ALLOWMULTISELECT
  • Den gamle version af Explorer ved at fjerne den konstante OFN_EXPLORER

Koden

 '*********************************' Auteur -> Lermite222 'Sélection d'une liste de fichiers' avec l 'explorateur Windows' Version 1 '29 / 01/2012 '********************************* Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias ​​_ "GetOpenFileNameA" (pOpenfilnavn som OPENFILENAME) Som lang privat type OPENFILENAME lStruktiver så lang tid hWndOwner så lang tid så lpstrFilter som streng lpstrCustomFilter som streng nMaxCustFilter så lang nFilterIndex så lang lpstrFile som streng nMaxFile så lang lpstrFileTitle som String nMaxFileTitle så længe lpstrInitialDir As String lpstrTitle Som String flag så længe nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData så længe lpfnHook så længe lpTemplateName As String End Type Public Enum LnFlags OFN_ALLOWMULTISELECT = & H200 OFN_CREATEPROMPT = & H2000 OFN_ENABLEHOOK = & H20 OFN_ENABLETEMPLATE = & H40 OFN_ENABLETEMPLATEHANDLE = & H80 OFN_EXPLORER = & H80000 OFN_EXTENSIONDIFFERENT = & H400 OFN_FILEMUSTEXIST = & H10 00 OFN_HIDEREADONLY = & H4 OFN_LONGNAMES = & H200000 OFN_NOCHANGEDIR = & H8 OFN_NODEREFERENCELINKS = & H100000 OFN_NOLONGNAMES = & H40000 OFN_NONETWORKBUTTON = & H20000 OFN_NOREADONLYRETURN = & H8000 OFN_NOTESTFILECREATE = & H10000 OFN_NOVALIDATE = & H100 OFN_OVERWRITEPROMPT = & H2 OFN_PATHMUSTEXIST = & H800 OFN_READONLY = & H1 OFN_SHAREAWARE = ​​& H4000 OFN_SHOWHELP = & H10 End Enum Private Sub Command1_Click () Dim Retour As String, jeg som helhed Dim TB Retour = ListeFichier () Hvis Retour = "" Afslut derefter Sub 'Udnyttes til at annullere TB = Split (Retur, vbNullChar)' Opdatering af liste existe Hvis UBound (TB) = 0 Then 'un seul fichier sélectionner For I = Len (TB (0)) Til 1 Trin -1 Hvis Mid (TB (0), I, 1) = "\" Afslut derefter til næste liste1.AddItem Mid (TB ), i + 1) TB (0) = Venstre (TB (0), i) Andet 'Une liste est disponnible For i = 1 Til Ubundet (TB) Liste1.AddItem TB (i) Næste ende Hvis Label1.Caption = TB (0) Slut Sub Private Sub Command2_Click () List1.Clear Label1 = "" End Sub Function ListeFichier () Som String Dim Ret Som L ong Dim LN_Ouv Som OPENFILENAME LN_Ouv.lStructSize = Len (LN_Ouv) LN_Ouv.hWndOwner = Me.hWnd LN_Ouv.hInstance = App.hInstance LN_Ouv.lpstrFilter = "Musique (* .mp3)" + Chr $ (0) + "* .mp3 "+ Chr $ (0) +" Tous (*. *) "+ Chr $ (0) +" *. * "+ Chr $ (0) LN_Ouv.lpstrFile = String $ (1024, vbNullChar) LN_Ouv.nMaxFile = Len (LN_Ouv.lpstrFile) - 1 'Longueur Maximum de la sélection des fichiers. LN_Ouv.lpstrTitle = "Sélection liste de fichier" "Titre de l'explorateur" -direktivet. LN_Ouv.flags = OFN_ALLOWMULTISELECT + OFN_ALLPLORER 'Affichage de l'explorateur Ret = GetOpenFileName (LN_Ouv) Hvis Ret = 0 Så ListeFichier = "" Else ListeFichier = Venstre $ (LN_Ouv.lpstrFile, InStr (1, LN_Ouv.lpstrFile, vbNullChar & vbNullChar) - 2) Afslut hvis slutfunktion 

Hent

Download projektet her.

Forrige Artikel Næste Artikel

Top Tips