VBA / VB6 - Pilih senarai fail dengan Windows Explorer

Pilih senarai fail (atau satu sahaja) dengan API: GetOpenFileName.

Fungsi mudah menggunakan Windows Explorer.

Kod ini juga berfungsi dalam VBA dengan syarat anda menyesuaikan kawalan.

Anda boleh berubah

  • Tajuk
  • Kembalinya fail tunggal dengan mengalihkan OFN_ALLOWMULTISELECT malar
  • Versi lama Explorer dengan membuang OFN_EXPLORER yang berterusan

Kod ini

 '*********************************' Auteur -> Lermite222 'Sélection d'une liste de fichiers' avec l 'explorateur Windows' Versi 1 '29 / 01/2012 '********************************* Fungsi Pemberitahuan Persendirian GetOpenFileName Lib "comdlg32.dll" Alias ​​_ "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) Sebagai 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 bendera As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As string lCustData As Long lpfnHook As Long lpTemplateName As string End Jenis 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 Sub Private Command1_Click () Dim Retour Sebagai String, saya sebagai Integer Dim TB Retour = ListeFichier () Jika Retour = "" Kemudian Keluar Sub 'L'utilisateur à annuler TB = Split (Retour, vbNullChar)' Séparation de la liste existe If UBound (TB) 0 Kemudian 'un seul fichier sélectionner Untuk i = Len (TB (0)) Untuk 1 Langkah -1 Jika Mid (TB (0), i, 1) = "\" Lalu Keluar Untuk Next List1.AddItem Mid (TB (0 (1) TB (0) = Kiri (TB (0), i) Lain 'Une liste est disponnible For i = 1 To UBound (TB) (0) Sub Akhir Sub Peribadi Sub Command2_Click () List1.Clear Label1 = "" End Sub Function ListeFichier () Sebagai String Dim Ret As L ong Dim LN_Ouv As 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 = (LN_Ouv.lpstrFile) - 1 'Longueur maksimum de la sélection des fichiers. LN_Ouv.lpstrTitle = "Senarai senarai terperinci" arahan arahan 'Titre de l'explorateur' dalam mode d'affichage. LN_Ouv.flags = OFN_ALLOWMULTISELECT + OFN_EXPLORER 'Affichage de l'explorateur Ret = GetOpenFileName (LN_Ouv) Jika Ret = 0 Kemudian ListeFichier = "" Else ListeFichier = Left $ (LN_Ouv.lpstrFile, InStr (1, LN_Ouv.lpstrFile, vbNullChar & vbNullChar) - 2) Akhir Jika Fungsi Akhir 

Muat turun

Muat turun projek di sini.

Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama