1. Sub Listfiles(ByVal mydir As String) Dim n As Integer, dirlevel As Integer, fname As String, dirlist() As String, num As Long num = 0 mydir = IIf(Right(mydir, 1) = "\", mydir, mydir & "\") fname = Dir(mydir) Do While fname <> "" Debug.Print mydir & fname num = num + 1 fname = Dir DoEvents Loop fname = LCase(Dir(mydir, vbDirectory)) Do While fname <> "" If fname <> "." And fname <> ".." Then If GetAttr(mydir & fname) And vbDirectory Then dirlevel = dirlevel + 1 ReDim Preserve dirlist(dirlevel) dirlist(dirlevel) = mydir & fname End If End If fname = Dir DoEvents Loop For n = 1 To dirlevel Listfiles dirlist(n) & "\" Next MsgBox "目录 " & mydir & " 共有 " & num & " 个文件" End SubPrivate Sub Command1_Click() Listfiles "f:\rc"'获得f:\rc下的所有文件跟文件夹 End Sub 2.那就看你放到哪咯.3. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Const SW_SHOWNORMAL = 1 Private Sub Command2_Click() ShellExecute Me.hWnd, vbNullString, "F:\ABC.TXT", vbNullString, vbNullString, SW_SHOWNORMALEnd Sub
'模 块 名:GetFolderList '功 能:返回指定文件夹的所有文件夹列表 '返 回 值:成功/失败:True/False '参 数:GetFileList(指定文件夹路径, 文件夹数组) '引 用:无 '外部函数:无 '内部变量:[SearchDir=路径][FoundDir=文件夹名][i=用于循环] '调用方法: '++++++++++++++++++++++++++++++++++++ ' Dim FolderName() As String, i As Long ' GetFileList "c:\", FolderName ' For i = 0 To UBound(FolderName) ' Debug.Print FolderName(i) ' Next i '++++++++++++++++++++++++++++++++++++ Public Function GetFolderList(ByVal Path As String, ByRef FolderName() As String) As Boolean Dim SearchDir As String Dim FoundDir As String Dim i As Long If right(Path, 1) <> "\" Then Path = Path & "\" SearchDir = Path & "\*." FoundDir = Dir(SearchDir, vbDirectory) While FoundDir <> "" If Not FoundDir = "." Or FoundDir = ".." Then FolderName(i) = FoundDir FoundDir = Dir() i = i + 1 Wend End Function'模 块 名:GetFileList '功 能:返回指定文件夹的所有文件名列表 '返 回 值:成功/失败:True/False '参 数:GetFileList(指定文件夹路径, 文件数组,返回的文件类型) '引 用:无 '外部函数:无 '内部变量:[fName=文件名][i=用于循环] '调用方法: '++++++++++++++++++++++++++++++++++++ ' Dim FileName() As String, i As Long ' GetFileList "c:\", FileName ' For i = 0 To UBound(FileName) ' Debug.Print FileName(i) ' Next i '++++++++++++++++++++++++++++++++++++ Function GetFileList(ByVal Path As String, ByRef Filename() As String, Optional fExp As String = "*.*") As Boolean Dim fName As String, i As Long If right$(Path, 1) <> "\" Then Path = Path & "\" fName = Dir$(Path & fExp) i = 0 Do While fName <> "" ReDim Preserve Filename(i) As String Filename(i) = fName fName = Dir$ i = i + 1 Loop If i <> 0 Then ReDim Preserve Filename(i - 1) As String GetFileList = True Else GetFileList = False End If End Function
VB声明 Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long 说明 查找与指定文件关联在一起的程序的文件名 返回值 Long,非零表示成功,零表示失败。会设置GetLastError 参数表 参数 类型及说明 hwnd Long,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框 lpOperation String,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它 lpFile String,想用关联程序打印或打开一个程序名或文件名 lpParameters String,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数 lpDirectory String,想使用的完整路径 nShowCmd Long,定义了如何显示启动程序的常数值。参考ShowWindow函数的nCmdShow参数
Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _ "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
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
'模 块 名:GetFolderList '功 能:返回指定文件夹的所有文件夹列表 '返 回 值:成功/失败:True/False '参 数:GetFileList(指定文件夹路径, 文件夹数组) '引 用:无 '外部函数:无 '内部变量:[SearchDir=路径][FoundDir=文件夹名][i=用于循环] '调用方法: '++++++++++++++++++++++++++++++++++++ ' Dim FolderName() As String, i As Long ' GetFolderList "C:\", FolderName ' For i = LBound(FolderName) To UBound(FolderName) ' Debug.Print FolderName(i) ' Next i '++++++++++++++++++++++++++++++++++++ Public Function GetFolderList(ByVal Path As String, ByRef FolderName() As String) As Boolean Dim SearchDir As String Dim FoundDir As String Dim i As Long If Right(Path, 1) <> "\" Then Path = Path & "\" SearchDir = Path & "*." FoundDir = Dir(SearchDir, vbDirectory) While FoundDir <> "" If Not FoundDir = "." Or FoundDir = ".." Then ReDim Preserve FolderName(i) As String FolderName(i) = FoundDir End If FoundDir = Dir() i = i + 1 Wend End Function
Sub Listfiles(ByVal mydir As String)
Dim n As Integer, dirlevel As Integer, fname As String, dirlist() As String, num As Long
num = 0
mydir = IIf(Right(mydir, 1) = "\", mydir, mydir & "\")
fname = Dir(mydir)
Do While fname <> ""
Debug.Print mydir & fname
num = num + 1
fname = Dir
DoEvents
Loop
fname = LCase(Dir(mydir, vbDirectory))
Do While fname <> ""
If fname <> "." And fname <> ".." Then
If GetAttr(mydir & fname) And vbDirectory Then
dirlevel = dirlevel + 1
ReDim Preserve dirlist(dirlevel)
dirlist(dirlevel) = mydir & fname
End If
End If
fname = Dir
DoEvents
Loop
For n = 1 To dirlevel
Listfiles dirlist(n) & "\"
Next
MsgBox "目录 " & mydir & " 共有 " & num & " 个文件"
End SubPrivate Sub Command1_Click()
Listfiles "f:\rc"'获得f:\rc下的所有文件跟文件夹
End Sub
2.那就看你放到哪咯.3.
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Const SW_SHOWNORMAL = 1
Private Sub Command2_Click()
ShellExecute Me.hWnd, vbNullString, "F:\ABC.TXT", vbNullString, vbNullString, SW_SHOWNORMALEnd Sub
'功 能:返回指定文件夹的所有文件夹列表
'返 回 值:成功/失败:True/False
'参 数:GetFileList(指定文件夹路径, 文件夹数组)
'引 用:无
'外部函数:无
'内部变量:[SearchDir=路径][FoundDir=文件夹名][i=用于循环]
'调用方法:
'++++++++++++++++++++++++++++++++++++
' Dim FolderName() As String, i As Long
' GetFileList "c:\", FolderName
' For i = 0 To UBound(FolderName)
' Debug.Print FolderName(i)
' Next i
'++++++++++++++++++++++++++++++++++++
Public Function GetFolderList(ByVal Path As String, ByRef FolderName() As String) As Boolean
Dim SearchDir As String
Dim FoundDir As String
Dim i As Long
If right(Path, 1) <> "\" Then Path = Path & "\"
SearchDir = Path & "\*."
FoundDir = Dir(SearchDir, vbDirectory)
While FoundDir <> ""
If Not FoundDir = "." Or FoundDir = ".." Then FolderName(i) = FoundDir
FoundDir = Dir()
i = i + 1
Wend
End Function'模 块 名:GetFileList
'功 能:返回指定文件夹的所有文件名列表
'返 回 值:成功/失败:True/False
'参 数:GetFileList(指定文件夹路径, 文件数组,返回的文件类型)
'引 用:无
'外部函数:无
'内部变量:[fName=文件名][i=用于循环]
'调用方法:
'++++++++++++++++++++++++++++++++++++
' Dim FileName() As String, i As Long
' GetFileList "c:\", FileName
' For i = 0 To UBound(FileName)
' Debug.Print FileName(i)
' Next i
'++++++++++++++++++++++++++++++++++++
Function GetFileList(ByVal Path As String, ByRef Filename() As String, Optional fExp As String = "*.*") As Boolean
Dim fName As String, i As Long
If right$(Path, 1) <> "\" Then Path = Path & "\"
fName = Dir$(Path & fExp)
i = 0
Do While fName <> ""
ReDim Preserve Filename(i) As String
Filename(i) = fName
fName = Dir$
i = i + 1
Loop
If i <> 0 Then
ReDim Preserve Filename(i - 1) As String
GetFileList = True
Else
GetFileList = False
End If
End Function
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
说明
查找与指定文件关联在一起的程序的文件名
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框
lpOperation String,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它
lpFile String,想用关联程序打印或打开一个程序名或文件名
lpParameters String,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数
lpDirectory String,想使用的完整路径
nShowCmd Long,定义了如何显示启动程序的常数值。参考ShowWindow函数的nCmdShow参数
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
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
'功 能:返回指定文件夹的所有文件夹列表
'返 回 值:成功/失败:True/False
'参 数:GetFileList(指定文件夹路径, 文件夹数组)
'引 用:无
'外部函数:无
'内部变量:[SearchDir=路径][FoundDir=文件夹名][i=用于循环]
'调用方法:
'++++++++++++++++++++++++++++++++++++
' Dim FolderName() As String, i As Long
' GetFolderList "C:\", FolderName
' For i = LBound(FolderName) To UBound(FolderName)
' Debug.Print FolderName(i)
' Next i
'++++++++++++++++++++++++++++++++++++
Public Function GetFolderList(ByVal Path As String, ByRef FolderName() As String) As Boolean
Dim SearchDir As String
Dim FoundDir As String
Dim i As Long
If Right(Path, 1) <> "\" Then Path = Path & "\"
SearchDir = Path & "*."
FoundDir = Dir(SearchDir, vbDirectory)
While FoundDir <> ""
If Not FoundDir = "." Or FoundDir = ".." Then
ReDim Preserve FolderName(i) As String
FolderName(i) = FoundDir
End If
FoundDir = Dir()
i = i + 1
Wend
End Function