VB查找文件的两种方法

合集下载

vb 获取路径

vb 获取路径

vb 获取路径【原创版】目录1.获取文件路径的方法2.获取文件夹路径的方法3.使用 VB 获取路径的实例正文在 VB 编程语言中,获取文件或文件夹路径的方法有很多种。

这里我们将介绍两种常用的方法,并给出一个实例来帮助理解。

首先,我们来看如何获取文件路径。

使用 VB 获取文件路径的方法非常简单,只需要使用`Path`函数即可。

`Path`函数不需要任何参数,它会返回当前文件的完整路径。

例如,如果你在代码中插入`MsgBox Path()`,那么它会弹出一个对话框,显示当前文件的完整路径。

接下来,我们来看如何获取文件夹路径。

获取文件夹路径的方法也很简单,同样可以使用`Path`函数,但需要配合`App.Path`或`App.ExeName`使用。

`App.Path`返回应用程序的安装路径,而`App.ExeName`返回应用程序的执行文件名。

例如,你可以使用`MsgBox Path & App.Path`来获取当前文件夹的路径。

现在,我们来看一个使用 VB 获取路径的实例。

假设我们要创建一个文件夹,并将当前文件复制到该文件夹中。

我们可以使用`Dir`函数来创建文件夹,然后使用`FileCopy`函数来复制文件。

具体的代码如下:```Dim FolderName As String, FileName As StringFolderName = "新文件夹"FileName = "原始文件.txt"" 创建文件夹MkDir FolderName" 获取文件路径Dim FilePath As StringFilePath = Path & FileName" 复制文件到文件夹FileCopy FilePath, FolderName & "" & FileName```在这个实例中,我们首先定义了要创建的文件夹名称和要复制的文件名称。

利用VB6.0的FSO对象实现文件查找的两种方法

利用VB6.0的FSO对象实现文件查找的两种方法

利用VB6.0的FSO对象实现文件查找的两种方法
梁里宁
【期刊名称】《智能计算机与应用》
【年(卷),期】2004(000)005
【摘要】介绍了利用VB6.0的FSO对FSO实现文件查找的两种方法,并给出了实现的具体代码.
【总页数】2页(P32,56)
【作者】梁里宁
【作者单位】暨南大学计算中心
【正文语种】中文
【中图分类】TP311
【相关文献】
1.应用FSO对象模型实现文件查找的探讨 [J], 孙康生
2.VB6.0实现串行通讯的两种方法 [J], 袁朔;袁赣南;徐锡芬
3.在VB6.0中利用对象技术调用OFFICE2000的方法 [J], 王琳燕
4.利用FSO实现文本记录导入ACCESS数据库 [J], 常婉纶
5.VB
6.0中利用ADO对象实现数据库编程 [J], 陈虹颐;何春
因版权原因,仅展示原文概要,查看原文内容请购买。

VB实现文件查找功能

VB实现文件查找功能

VB实现文件查找功能在VB中要实现查找文件功能,我们可以利用VB的DIR函数进行递归来实现。

每次使用DIR函数后,比较是否有要查找的文件,再检查是否有子目录,若有,利用递归继续查找,这样可对整个盘进行查找。

下面是一个例子,查找DOS目录下的所有EXE文件,统计EXE文件的数目并列出文件名。

本程序会查找当前路径下的所有文件和子目录,与WIN95的“包含子文件夹”的查找功能类似。

程序与注释如下:1.在窗体中加一命令按钮Command1,Caption=查找示例,双击此按钮,写如下代码:Private Sub Command1_Click()Dim ff() As String '定义一个字符串数组用来保存找到的文件名称Dim fn As Long '保存找到的文件数目fn=TreeSearch("C:%%dos","*.exe",ff())Print "找到文件数目为" & fnFor I=1 To fnPrint ff(I)NextEnd Sub2.插入一模块Modulel.bas,写如下代码:Option ExplicitPublic Function TreeSearch(ByVal sPath As String,ByVal sFileSpec As String,sFiles() As String) As LongStatic 1Files As Long '文件数目Dim sDir As StringDim sSubDirs() As String '存放子目录名称Dim 1Index As LongIf Right(sPath,1)<>"%%" Then sPath=sPath & "%%"sDir=Dir(sPath & sFileSpec)'获得当前目录下文件名和数目Do While Len(sDir)1Files=1Files+1ReDim Preserve sFiles(1 To 1Files)sFiles(1Files)=sPath & sDirsDir=DirLoop'获得当前目录下的子目录名称1Index=0sDir=Dir(sPath & "*.*",16)Do While Len(sDir)If Left(sDir,1)<>"." Then 'skip.and..'找出子目录名If GetAttr(sPath & sDir)And vbDirectory Then1Index=lIndex+1'保存子目录名Redim Preserve sSubDirs(1 To 1Index)sSubDirs(1Index)=sPath & sDir & "%%"End IfEnd IfsDir=dirLoopFor 1Index=1 To 1Index'查找每一个子目录下文件,这里利用了递归Call TreeSearch(sSubDirs(1Index),sFileSpec,sFiles()) Next 1IndexTreeSearch=1FilesEnd Function3.保存文件,按F5运行,单击命令按钮即可。

VBA遍历所有文件夹的两种方法(filesearch和FileSystemObject)

VBA遍历所有文件夹的两种方法(filesearch和FileSystemObject)

VBA遍历所有文件夹的两种方法(filesearch和FileSystemObject)在VBA遍历文件夹和子文件夹中所有文件,常用两种方法,一种是使用VBA的filesercth对象,另外一种是使用FileSystemObject(windows文件管理工具)和递归方法。

兰色对代码进行了注解,希望对大家有所帮助第一种方法:使用filesearch对象Sub mysearch()Dim fs, i, arr(1 To 10000)Set fs = Application.FileSearch '设置一个搜索对象With fs.LookIn = ThisWorkbook.Path & "/" '设置搜索路径.Filename = "*.xls" '要搜索文件名和类型.SearchSubFolders = True '是否需要搜索子文件夹If .Execute > 0 Then '如果找不到文件MsgBox "There were " & .FoundFiles.Count & _" file(s) found." '显示文件找不到For i = 1 To .FoundFiles.Count '通过循环把所有搜索到的文件存入到数组中arr(i) = .FoundFiles(i)Next iSheets(1).Range("A1").Resize(.FoundFiles.Count) = Application.Transpose(arr) ' '把数组内的路径和文件名放在单元格中ElseMsgBox "There were no files found."End IfEnd WithEnd Sub第二种方法:引用FileSystemObject对象注意:要使用FileSystemObject对象,需要首先引用一下,具体方法,VBE--工具--引用--找到miscrosoft scription runtime项目并选中代码及注释:Dim ArrFiles(1 T o 10000) '创建一个数组空间,用来存放文件名称Dim cntFiles% '文件个数Public Sub ListAllFiles()Dim strPath$ '声明文件路径Dim i%'Set fso = CreateObject("Scripting.FileSystemObject")Dim fso As New FileSystemObject, fd As Folder '创建一个FileSystemObject对象和一个文件夹对象strPath = ThisWorkbook.Path & "/" '"设置要遍历的文件夹目录cntFiles = 0Set fd = fso.GetFolder(strPath) '设置fd文件夹对象SearchFiles fd '调用子程序查搜索文件Sheets(1).Range("A1").Resize(cntFiles) = Application.Transpose(ArrFiles) '把数组内的路径和文件名放在单元格中End SubSub SearchFiles(ByVal fd As Folder)Dim fl As FileDim sfd As FolderFor Each fl In fd.Files '通过循环把文件逐个放在数组内cntFiles = cntFiles + 1ArrFiles(cntFiles) = fl.PathNext flIf fd.SubFolders.Count = 0 Then Exit Sub 'SubFolders返回由指定文件夹中所有子文件夹(包括隐藏文件夹和系统文件夹)组成的Folders 集合For Each sfd In fd.SubFolders '在 Folders 集合进行循环查找SearchFiles sfd '使用递归方法查找下一个文件夹NextEnd Sub。

VB查找文件的两种方法

VB查找文件的两种方法

VB查找文件的两种方法
1、使用目录树查找文件:可以使用Visual Basic的文件查找工具,
它包含一个可以把文件系统结构显示成一个目录树的工具窗口,可以用来
浏览文件系统中的所有文件和文件夹。

可以在“开始”菜单中找到“文件
查找”,或者在Visual Basic的工具栏中点击“文件资源管理器”的图标。

在“文件资源管理器”窗口中,可以用鼠标单击当前的目录,查看下
一级目录,在这个过程中可以找到需要的文件,单击左键确定文件或文件
夹的位置。

2、使用工具查找文件:在Visual Basic中也可以使用工具查找文件,可以从“开始”菜单中找到“文件查找”,点击打开窗口,在窗口中输入
要的文件名称,指定要的范围,点击“查找”按钮,程序会在指定的范围
内满足要求的文件,找到的结果会显示在右边的窗口中,单击右键可以查
看文件的详细信息,也可以查看文件的位置,从而找到指定文件的位置。

在VB中如何判断文件、文件夹是否存在和生成文件夹

在VB中如何判断文件、文件夹是否存在和生成文件夹

在VB中如何判断文件、文件夹是否存在和生成文件夹在VB中如何判断文件、文件夹是否存在和生成文件夹2007年11月14日星期三下午01:52一、在VB编程中,经常需要判断一个文件和文件或是否存在,以便执行相相应的操作,这可以用下列语句进行判断。

Dir ([PathName],[Attributes as VbFileAttribute = vbNormal]) as String解释:PathName:文件或文件夹的绝对路径。

Attributes:文件的属性--默认值:vbNormal 是普通文件,vbHidden 是隐藏文件,vbDirectory是文件夹。

"[]"内为可以选项。

Dir(file)=""表示文件或文件夹不存,即文件或文件夹的实际路径文空。

Dir(file)<>""表示文件或文件夹存在,即文件或文件夹实际路径不为空。

例如判断C:\Windows\System32\cmd.exe是否存在,如存在,就调用它,可用下列语句:’文件存,利用Shell调用,默值为vbNormalIf Dir("C:\Windows\System32\cmd.exe")<>"" ThenShell "C:\Windows\System32\cmd.exe"End If如果判断的文件是隐藏文件,上面的语则无法判断出来,这时就需要加上后面的可选项目,例如判断D盘根目录下是否有隐藏文件text.txt,就用下面的源代码:If Dir("D:\text.txt",vbHidden)<>"" ThenMsgbox "找到Text.txt隐藏文件"End If判断件夹是否存,与判断隐藏文件的方法一样,可用下列语句:Dir("文件夹路径",vbDirectory)<>""例如,要判断文件D:\Backup是否存在,源代码如下:If Dir("D:\Backup",vbDirectory)<>"" ThenMsgbox "文件夹:D:\Backup 存在!"End If二、在VB的编程,也会用到利用应程序时生成文件夹。

VB文件查询系统

VB文件查询系统

VB文件查询系统今天,我们将制作一个文件查询系统的应用程序。

运行程序时,选择要查询的目录并输入文件名后,就可以开始查找了。

运行结果可以以不同的形式显示。

程序运行结果如图所示。

运行结果技术要点●ListView控件的显示方式●取得文件信息●文件查询API函数FindFirstFile()和FindNextFile()●关闭文件查询函数FindClose()●打开文件目录对话框函数SHBrowseForFolder()实现过程■新建项目打开Visual ,选择“新建项目”,在项目类型窗口中选择“Visual Basic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“FindFile”,然后选择保存路径。

单击“确认”。

■添加控件添加三个Button按钮,用于执行相应的操作;相对应的两个Label控件和TextBox控件,分别用于说明和输入文件名和目录;一个Group控件和四个RadioButton控件,用于显示不同的显示方式;一个ListView控件,用于显示查询的结果。

■设置属性将Option控件做成控件数组,命名为optview,将其他控件的Text属性改为和界面一致。

其余属性保持默认值。

■添加代码由于版面有限,在此仅列出主要的函数及其声明,主要的功能都已经列出,其余代码见光盘。

' 在模块中添加API函数、常数和类型Public Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime AsFILETIME, lpSystemTime As SYSTEMTIME) As LongPublic Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As LongPublic Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DA TA) As LongPublic Const SHGFI_SYSICONINDEX = &H4000 'system icon indexPublic shinfo As SHFILEINFOPublic Type SHFILEINFOhIcon As LongiIcon As LongdwAttributes As LongszDisplayName As String * MAX_PA THszTypeName As String * 80End Type'主窗体函数' 打开文件目录对话框函数Private Function BrowDir() As ObjectDim bi As BROWSEINFODim pidl As LongDim rtn As StringDim path As StringDim pos As ShortDim mypath As String' 打开目录对话框选择文件夹pidl = SHBrowseForFolder(bi)path = Space(512)' 转化为文件系统路径rtn = CStr(SHGetPathFromIDList(pidl, path))If CBool(rtn) Thenpos = InStr(path, Chr(0))BrowDir = VB.Left(path, pos - 1)End IfEnd Function' 选择路径Private Sub Button3_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Button3.ClickText2.Text = BrowDir()End Sub' 查找文件函数Sub FindFile(ByRef dirpath As String, ByRef filespec As String)Dim finddata As WIN32_FIND_DATADim findnexthandle As IntegerDim filestring As StringDim dirfile As StringDim n As ShortDim fileinfo As Integerdirpath = Trim(dirpath)' 判断路径的有效性If VB.Right(dirpath, 1) = "\" Thendirfile = dirpath & filespecElsedirfile = dirpath & "\" & filespecEnd If' 每次查询前,清空ListViewListView1.ListItems.Clear()' 搜索第一个匹配的文件findhandle = FindFirstFile(dirfile, finddata)If findhandle <> 0 Then' 取得查询的文件名filestring = Trim(finddata.cFileName)n = n + 1' 返回文件的相关信息,fileinfo = SHGetFileInfo(dirfile, 0, shinfo, Len(shinfo), SHGFI_TYPENAME)' 将取得文件信息加入到ListView控件中With ListView1.ListItems.Add( , , filestring).SubItems(1) = vbGetFileSizeKBStr(finddata.nFileSizeHigh +finddata.nFileSizeLow).SubItems(2) = vbGetFileDate(finddata.ftCreationTime)' .SubItems(3) = shinfo.szTypeNameEnd WithEnd IfIf findhandle <> 0 ThenDoSystem.Windows.Forms.Application.DoEvents()' 搜索下一个匹配的文件findnexthandle = FindNextFile(findhandle, finddata)If VB.Right(dirpath, 1) = "\" Thendirfile = dirpath & finddata.cFileNameElsedirfile = dirpath & "\" & finddata.cFileNameEnd If' 取得查询文件的信息fileinfo = SHGetFileInfo(dirfile, 0, shinfo, Len(shinfo),BASIC_SHGFI_FLAGS)If findnexthandle <> 0 Thenfilestring = Trim(finddata.cFileName)' 将查询文件的信息添加到ListView控件中With ListView1.ListItems.Add( , , filestring).SubItems(1) = vbGetFileSizeKBStr(finddata.nFileSizeHigh +finddata.nFileSizeLow).SubItems(2) = vbGetFileDate(finddata.ftCreationTime)' .SubItems(3) = shinfo.szTypeNameEnd WithElseExit DoEnd IfLoopEnd If' 查询完毕,关闭文件Call FindClose(findhandle)End Sub' 程序启动,默认为C:Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.LoadText1.Text = "*.*"Text2.Text = "C:\"optarrange(3).Checked = TrueListView1.SortKey = 0End Sub' 取得文件大小函数Private Function vbGetFileSizeKBStr(ByRef fsize As Integer) As StringvbGetFileSizeKBStr = VB6.Format(((fsize) / 1000) + 0.5, "#,###,###") & "KB" End Function' 将文件日期转化为系统日期函数Private Function vbGetFileDate(ByRef CT As FILETIME) As StringDim ST As SYSTEMTIMEDim r As IntegerDim ds As Singler = FileTimeToSystemTime(CT, ST)If r Thends = DateSerial(ST.wYear, ST.wMonth, ST.wDay).ToOADatevbGetFileDate = VB6.Format(ds, "long Date")Else : vbGetFileDate = ""End IfEnd Function' 采用不同的方式显示查询结果Private Sub optarrange_CheckedChanged(ByVal eventSender As System.Object, ByValeventArgs As System.EventArgs) Handles optarrange.CheckedChangedIf eventSender.Checked ThenDim Index As Short = optarrange.GetIndex(eventSender)Select Case IndexCase 0ListView1.View = MSComctlLib.ListViewConstants.lvwIconCase 1ListView1.View = MSComctlLib.ListViewConstants.lvwSmallIconCase 2ListView1.View = MSComctlLib.ListViewConstants.lvwListCase 3ListView1.View = MSComctlLib.ListViewConstants.lvwReportEnd SelectEnd IfEnd Sub■运行程序单击菜单“调试|启动”或单击图标运行程序。

VB 检查文件存在的三种方法_网路空间空间

VB 检查文件存在的三种方法_网路空间空间

VB 检查文件存在的三种方法_网路空间_百度空间用户名: 密码: 登录注册网路空间〈胡子软件工作室〉 /boxroom主页博客相册|个人档案 |好友查看文章VB 检查文件存在的三种方法2009年06月03日下午 09:47VB 检查文件存在的三种方法━━━━━━━━━━━━━━━━━━━━━━━━━━VB有个内置的函数: DIR在指定的前题下,它可以为你提供文件列表.若你指明了文件的全名(和路径).如果文件存在,它将返回文件名.若指定文件不存在,返回的是一个空值.找C盘下的123.txtif dir("c:\123.txt") <>"" thenmsgbox "file exists~!"elsemsgbox" file doesn't exist!"end if若文件有特殊的属性(如隐藏),那么你也需要指明它.if dir("c:\123.txt",vbhidden) <> "" thenmsgbox "file exists!"elsemsgbox " file doesn't exist!"end if这里有一个函数可以返回TRUE 或 false 如果文件存在或否.private function CheckPath(srtPath as string) as booleanif dir$(strPath) <> "" thencheckPath = TrueelsecheckPath = Falseend ifend function----------------------------------------------------------------------------------------------------------------------最可靠的一种方法来检查文件是否存在(不论是其属性是隐藏,系统,或其它别的什么都不会影响到检查的结果...)'In a standard Module: Module1.basOption ExplicitPrivate Const OF_EXIST As Long = &H4000Private Const OFS_MAXPATHNAME As Long = 128Private Const HFILE_ERROR As Long = -1Private Type OFSTRUCTcBytes As BytefFixedDisk As BytenErrCode As IntegerReserved1 As IntegerReserved2 As IntegerszPathName(OFS_MAXPATHNAME) As ByteEnd TypePrivate Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, _lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As LongPublic Function FileExists(ByVal Fname As String) As BooleanDim lRetVal As LongDim OfSt As OFSTRUCTlRetVal = OpenFile(Fname, OfSt, OF_EXIST)If lRetVal <> HFILE_ERROR ThenFileExists = TrueElseFileExists = FalseEnd IfEnd Function'Usage:'Behind Form1:Option ExplicitPrivate Sub Form_Load()MsgBox FileExists("C:\Test.txt") 'True :DEnd Sub类别:◆vb篇 | | 添加到搜藏 | 分享到i贴吧 | 浏览() | 评论 (0)最近读者:网友评论:发表评论:内容:取消回复&copy;2010 Baidu。

VBA中的文件搜索与批量处理技巧

VBA中的文件搜索与批量处理技巧

VBA中的文件搜索与批量处理技巧VBA(Visual Basic for Applications)是一种用于自动化任务和定制Microsoft Office应用程序的编程语言。

在处理大量文件和数据时,文件搜索和批量处理是常见的需求。

在本文中,将介绍一些VBA中的文件搜索和批量处理技巧,帮助您更高效地处理文件和数据。

一、文件搜索技巧文件搜索是一项重要的任务,特别是在处理大量文件时。

VBA提供了许多功能和方法,可以帮助我们实现文件搜索。

1. 使用Dir函数:Dir函数是VBA中的一个基本文件查找函数。

通过指定文件路径和文件类型的参数,Dir函数可以返回匹配的文件名。

可以使用循环结构,遍历文件夹中的所有文件,并根据文件名的条件进行筛选。

2. 使用FileSystemObject:FileSystemObject是VBA中用于操作文件系统的对象。

它提供了更高级的文件搜索功能,可以搜索指定文件夹中的所有文件,甚至包括子文件夹。

使用FileSystemObject还可以获取文件的属性和路径等信息。

3. 限制搜索范围:为了提高文件搜索的效率,可以通过限制搜索范围来缩小搜索的范围。

例如,可以指定搜索的根文件夹,或者通过文件名的关键字进行筛选。

4. 使用通配符:通配符是一种用于模糊匹配文件名的符号。

在文件搜索中,使用通配符可以更灵活地匹配文件名。

例如,使用"*"通配符可以匹配任意字符,使用"?"通配符可以匹配任意单个字符。

二、文件批量处理技巧文件批量处理是指对多个文件进行相同操作或一系列操作的过程。

VBA提供了许多功能和方法,可以帮助我们实现文件批量处理。

1. 使用For Each循环:For Each循环是VBA中的一种循环结构,可以遍历集合中的所有对象。

通过使用For Each循环,可以遍历文件夹中的所有文件,并对每个文件执行相同的操作。

2. 使用FileSystemObject:如前所述,FileSystemObject是VBA中常用的文件操作对象。

VB常用算法8查找

VB常用算法8查找

VB常用算法----查找1、顺序查找逐个元素找,如果有,则记录位置,然后跳出循环;否则,查找失败。

代码如下:Private Sub Search(a() as integer, ByVal Key as integer, Index As Integer) Dim i%For i = LBound(a) To UBound(a)If a(i) = Key Then '找到,将元素下标保存在index中并结束查找Index = iExit SubEnd IfNext iIndex = -1 '若没找到,则index值为-1End Sub2、二分法查找顺序查找效率低下,当数组有序排列时,可以使用二分法查找提高效率。

算法思想:代码如下:Option ExplicitPrivate Sub birSearch(a() As Integer, ByVal low%, ByVal high%, ByVal Key, index%) Dim mid As IntegerIf low > high Then '没有查找到index = -1Exit SubEnd Ifmid = (low + high) \ 2 '取查找区间的中点If Key = a(mid) Then '查找到,返回下标index = midExit SubElseIf Key < a(mid) Then '查找区间在上半部分high = mid - 1Elselow = mid + 1 '查找区间在下半部分End IfCall birSearch(a, low, high, Key, index) '递归调用查找函数End Sub调用方法:Private Sub Command1_Click()Dim a(11) As Integer, find As IntegerDim ind As Integera(1) = 5: a(2) = 13: a(3) = 19: a(4) = 21: a(5) = 37a(6) = 56: a(7) = 64: a(8) = 75: a(9) = 80: a(10) = 88: a(11) = 92find = InputBox("请输入欲查找元素值")Call birSearch(a, LBound(a), UBound(a), find, ind)If ind > 0 ThenPrint "所查找元素为数组第"; ind; "个元素"ElsePrint "所查找元素在数组中不存在"End IfEnd Sub3、实战练习完善程序填空题(2002春二(9))在程序所在目录的stu.txt文件中以下述格式保存着学生姓名及班号信息。

四、VBA获取目录、文件路径简明代码(VB语句、FSO两种方式)

四、VBA获取目录、文件路径简明代码(VB语句、FSO两种方式)

四、VBA获取目录、文件路径简明代码(VB语句、FSO两种方式)(一)VB语句方式''''程序入口↓''''获取所有文件路径Sub GetFileList()Call GetFolderList ''''调用GetFolderList()过程获取所有文件夹路径Columns(2).ClearDim fileName, folderPath As StringDim rowIndexA, rowIndexB, maxRow, lastRowA As Integer maxRow = Rows.CountlastRowA = Cells(maxRow,1).End(xlUp).RowFor rowIndexA =1To lastRowAfolderPath = Cells(rowIndexA,1).ValuefileName = Dir(folderPath)rowIndexB = Cells(maxRow,2).End(xlUp).Row +1Do While fileName <>""Cells(rowIndexB,2).Value = folderPath & fileNamerowIndexB = rowIndexB +1fileName = DirLoopNext rowIndexAEnd Sub''''获取GetMainDirectory拾取文件夹路径下的所有文件夹,放到A列Sub GetFolderList()Dim folderName As StringDim i, k As IntegerColumns(1).ClearCells(1,1).Value = GetMainDirectory(msoFileDialogFolderPicker)&"\"i =1k =1Do While i <= kfolderName = Dir(Cells(i,1).Value, vbDirectory)DoIf InStr(folderName,".")=0And _(GetAttr(Cells(i,1).Value & folderName)And vbDirectory)= vbDirectory Thenk = k +1Cells(k,1).Value = Cells(i,1).Value & folderName &"\"End IffolderName = DirLoop Until folderName =""i = i +1LoopEnd Sub''''函数,拾取一个文件夹路径,返回路径字符串Function GetMainDirectory(ByVal DialogType As MsoFileDialogType)As StringWith Application.FileDialog(DialogType)If.Show =True ThenGetMainDirectory =.SelectedItems(1)End IfEnd WithEnd Function(二)FSO方式''''##############################''''工具——引用类库文件"Microsoft Scripting Runtime"''''##############################''''程序入口↓''''获取文件列表Sub FsoGetFileList()Dim folderPath As StringDim maxRow, lastRow, maxRowB, LastRowB As IntegerDim i As IntegerDim folder, allFiles As ObjectDim fso As New FileSystemObjectCall FsoGetFolderList ''''调用FsoGetFolderList方法获取目录列表Columns(2).ClearmaxRow = Rows.CountlastRow = Cells(maxRow,1).End(xlUp).RowFor i =1To lastRowfolderPath = Cells(i,1).ValueSet folder = fso.GetFolder(folderPath)Set allFiles = folder.FilesmaxRowB = Rows.CountLastRowB = Cells(maxRowB,2).End(xlUp).Row +1For Each File In allFilesCells(LastRowB,2).Value = File.PathLastRowB = LastRowB +1NextNext iEnd Sub''''获取文件夹列表Sub FsoGetFolderList()Dim rowIndex As IntegerDim folderPath As String''''调用函数获取主文件夹目录folderPath = GetMainDirectory(msoFileDialogFolderPicker) rowIndex =1Columns(1).ClearDoIf rowIndex =1ThenGetFolderPath (folderPath)Cells(rowIndex,1).Value = folderPathElseGetFolderPath (Cells(rowIndex,1).Value)End IfrowIndex = rowIndex +1Loop Until Cells(rowIndex,1).Value =""End Sub''''定义函数,作用是获取给定文件夹路径(mainFolderPath)的子文件夹Function GetFolderPath(mainFolderPath)Dim mainFolder, childFolders As ObjectDim index As Integer''''创建FileSystemObject对象fsoDim fso As New FileSystemObject''''从路径获得folder对象mainFolderSet mainFolder = fso.GetFolder(mainFolderPath)''''获得mainFolder的子目录集合childFoldersSet childFolders = mainFolder.SubFolders''''行号初始值设定为A列最后一个非空行的+1行,第一次执行的时候index=2index = Cells(Rows.Count,1).End(xlUp).Row +1''''for each ……in 遍历集合取每一个子目录childFolder的路径pathFor Each childfolder In childFoldersCells(index,1).Value = childfolder.Path ''''路径index = index +1NextEnd Function''''函数,拾取一个文件夹路径,返回路径字符串Function GetMainDirectory(ByVal DialogType As MsoFileDialogType)As StringWith Application.FileDialog(DialogType)If.Show =True ThenGetMainDirectory =.SelectedItems(1)End IfEnd WithEnd Function。

vb 搜索示例

vb 搜索示例

VB中遍历目录,遍历目录中查找文件(api和dir())2007年05月05日星期六 14:59VB 中遍历目录,遍历目录查找文件的2个实现方法方法1:API实现将下列代码保存到一个模块中,就可以直接调用了--------------------------------------------------------------------------------Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData AsWIN32_FIND_DATA) As LongPublic Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData AsWIN32_FIND_DATA) As LongPublic Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long'最大路径长度和文件属性常量的定义Public Const MAX_PATH = 260Public Const FILE_ATTRIBUTE_ARCHIVE = &H20Public Const FILE_ATTRIBUTE_COMPRESSED = &H800Public Const FILE_ATTRIBUTE_DIRECTORY = &H10Public Const FILE_ATTRIBUTE_HIDDEN = &H2Public Const FILE_ATTRIBUTE_NORMAL = &H80Public Const FILE_ATTRIBUTE_READONLY = &H1Public Const FILE_ATTRIBUTE_SYSTEM = &H4Public Const FILE_ATTRIBUTE_TEMPORARY = &H100'自定义数据类型FILETIME和WIN32_FIND_DATA的定义Public Type FILETIMEdwLowDateTime As LongdwHighDateTime As LongEnd TypePublic Type WIN32_FIND_DATAdwFileAttributes As LongftCreationTime As FILETIMEftLastAccessTime As FILETIMEftLastWriteTime As FILETIMEnFileSizeHigh As LongnFileSizeLow As LongdwReserved0 As LongdwReserved1 As LongcFileName As String * MAX_PATHcAlternate As String * 14End TypePublic Function fDelInvaildChr(str As String) As StringOn Error Resume NextFor i = Len(str) To 1 Step -1If Asc(Mid(str, i, 1)) <> 0 And Asc(Mid(str, i, 1)) <> 32 Then fDelInvaildChr = Left(str, i)Exit ForEnd IfNextEnd Function'遍历主函数'参数说明:' strPathName 要遍历的目录' objList 使用VB的内部控件ListBox来存放遍历得到的路径,之所以' 不使用字符串数组是因为数组大小不好定义''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Public Sub sDirTraversal(ByVal strPathName As String, ByRef objList As ListBox)Dim sSubDir(200) As String '存放当前目录下的子目录,下标可根据需要调整Dim iIndex As Integer '子目录数组下标Dim i As Integer '用于循环子目录的查找Dim lHandle As Long 'FindFirstFileA 的句柄Dim tFindData As WIN32_FIND_DATA 'Dim strFileName As String '文件名On Error Resume Next'初始化变量i = 1iIndex = 0tFindData.cFileName = "" '初始化定长字符串lHandle = FindFirstFile(strPathName & "\*.*", tFindData)If lHandle = 0 Then '查询结束或发生错误Exit SubEnd IfstrFileName = fDelInvaildChr(tFindData.cFileName)If tFindData.dwFileAttributes = &H10 Then '目录If strFileName <> "." And strFileName <> ".." TheniIndex = iIndex + 1sSubDir(iIndex) = strPathName & "\" & strFileName '添加到目录数组End IfElseobjList.AddItem strPathName & "\" & strFileNameEnd If'循环查找下一个文件,直到结束Do While TruetFindData.cFileName = ""If FindNextFile(lHandle, tFindData) = 0 Then '查询结束或发生错误 FindClose (lHandle)Exit DoElsestrFileName = fDelInvaildChr(tFindData.cFileName)If tFindData.dwFileAttributes = &H10 ThenIf strFileName <> "." And strFileName <> ".." TheniIndex = iIndex + 1sSubDir(iIndex) = strPathName & "\" & strFileName '添加到目录数组End IfElseobjList.AddItem strPathName & "\" & strFileNameEnd IfEnd IfLoop'如果该目录下有目录,则根据目录数组递归遍历If iIndex > 0 ThenFor i = 1 To iIndexsDirTraversal sSubDir(i), objListNextEnd IfEnd Sub--------------------------------------------------------------------------------方法2:不使用API,直接用VB的函数Dir 来实现'------------------------------------'遍历列出所有目录Public Function FindTxt(ByVal sTmp As String, list As Collection)Dim myPath, myName As StringDim i, j, k As IntegerDim sPath() As StringDim sStr() As StringDim sTemp As String'Dim sTxt() As StringmyPath = sTmpmyName = Dir(myPath, vbDirectory) ' 找寻第一项。

VBA中的目录操作与文件搜索方法

VBA中的目录操作与文件搜索方法

VBA中的目录操作与文件搜索方法VBA(Visual Basic for Applications)是一种被广泛应用于Microsoft Office套件中的编程语言。

在使用VBA编写宏时,经常需要进行目录操作和文件搜索。

本文将介绍在VBA中进行目录操作和文件搜索的方法。

目录操作是指对目录(即文件夹)进行创建、重命名、删除等操作。

在VBA中,可以使用FileSystemObject对象来实现目录操作。

首先需要在代码的开头添加对Microsoft Scripting Runtime库的引用,然后声明一个FileSystemObject对象,如下所示:```vbaDim fs As ObjectSet fs = CreateObject("Scripting.FileSystemObject")```接下来,可以使用FileSystemObject来进行各种目录操作。

以下是几个常见的目录操作方法:1. 创建目录:使用CreateFolder方法可以创建一个新的目录。

示例如下:```vbafs.CreateFolder "C:\NewFolder"```2. 删除目录:使用DeleteFolder方法可以删除一个目录。

示例如下:```vbafs.DeleteFolder "C:\OldFolder"```3. 检查目录是否存在:使用FolderExists方法可以检查一个目录是否存在。

示例如下:```vbaIf fs.FolderExists("C:\ExistingFolder") ThenMsgBox "目录存在!"ElseMsgBox "目录不存在!"End If```除了目录操作,文件搜索也是VBA中常用的功能。

需要遍历目录中的文件,并根据一定的条件进行搜索。

以下是几个常见的文件搜索方法:1. 遍历目录中的文件:使用GetFolder方法可以获取一个目录的Folder对象,然后使用Files属性获取该目录中的所有文件。

VBA中的文件路径与文件查找技巧

VBA中的文件路径与文件查找技巧

VBA中的文件路径与文件查找技巧在使用VBA编程时,经常需要处理文件和文件路径的操作。

文件路径指的是文件的保存位置或者文件夹的位置,而文件查找技巧则是指通过VBA代码来查找文件或者在文件夹中搜索特定类型的文件。

掌握这些技巧将提高我们在VBA中处理文件操作的效率。

本文将介绍一些VBA中常用的文件路径与文件查找技巧,帮助读者更好地利用VBA来处理文件操作。

1. 获取当前工作目录的路径在VBA中,我们可以通过使用CurDir函数来获取当前工作目录的路径。

当前工作目录是指在进行文件操作时,默认情况下打开或保存文件的路径。

下面是一个简单的例子,演示如何使用CurDir函数获取当前工作目录的路径:```Sub GetCurrentDirectory()MsgBox CurDirEnd Sub```2. 获取特定文件的路径除了获取当前工作目录的路径,我们还经常需要获取特定文件的路径。

下面是两种不同的方法来获取特定文件的路径:- 使用FileDialog对话框选择文件路径使用VBA中的FileDialog对话框可以让用户选择文件,从而获取选择文件的路径。

以下是一个使用FileDialog对话框选择文件路径的示例:```Sub GetFilePath()Dim fileDialog As FileDialogDim selectedFile As VariantSet fileDialog = Application.FileDialog(msoFileDialogFilePicker) With fileDialog.Title = "请选择文件".Filters.Add "Excel文件", "*.xlsx".AllowMultiSelect = FalseIf .Show = -1 Then ' 用户点击了"打开"按钮For Each selectedFile In .SelectedItemsMsgBox selectedFileNext selectedFileEnd IfEnd WithSet fileDialog = NothingEnd Sub```- 使用FileSystemObject对象获取文件路径另一种获取特定文件的路径的方法是使用VBA中的FileSystemObject对象。

vb读取文件夹的文件

vb读取文件夹的文件

在使用vb编程,有些时候我们不得不面对需要一次性读取文件夹中某一类型的所有文件,这如何实现咧?第一种方法是动态加载控件实现文件的读取,代码如下:Private Sub Command1_Click()Dim objDlg //shell对象Dim objF //文件选择对话框对象Dim DstPath //文件夹路径Dim I //临时变量Set objDlg = CreateObject("Shell.Application") //加载shell对象Set objF = objDlg.BrowseForFolder(&H0, "选择存放位置:", &H1) //打开一个浏览文件夹If InStr(1, TypeName(objF), "Folder", vbTextCompare) > 0 Then //路径有效则记录路径DstPath = objF.self.PathElseMsgBox "目录无效!"End IfBrowseForFolder的作用就是创建上图所示的文件夹选择对话框,其参数表为:object.BrowseForFolder Hwnd, Title, Options, [RootFolder]object 用来创建对话框的对象Hwnd 父窗口的句柄Title 对话框的标题Options 一个long类型的值主要的作用是控制对话框显示的格式,具体取值可以参看MSDN中的“BROWSEINFO”RootFolder 可选项,对话框打开时的位置Dim flist As FileListBox //控件类型FileListBoxDim lbox As ListBox //控件类型ListBox‘通过Me对象以及Controls集合动态的加载两个控件Set flist = Me.Controls.Add("VB.FilelistBox", "flb", Me)Set lbox = Me.Controls.Add(“VB.ListBox”, “lb”, Me)With objF ' File1.Pattern = "*.jpg;*.bmp;*.gif" //需要筛选出来的文件类型.Path = DstPath //文件夹的路径For i = 0 To .ListCount - 1 //遍历所有指定类型的文件List1.AddItem DstPath & "\" & .List(i) //假设listbox的名称为list1 NextEnd WithEnd Sub这里需要说明一下:FileListBox控件可以通过.Pattern中指定的文件后缀名,以及.Path指定的文件夹路径,筛选出.Path路径下所有满足条件的文件类型,将文件名全部记录在.List数组中,我们通过一个ListBox控件,将.List 数组中的所有文件全部取出来,通过DstPath & "\" & .List(i),记录下文件的全路径有些时候,我们需要将弹出来的对话框设置成模态的对话框以限制用户的一些操作,但是一般使用BrowseForFolder得到的都是非模态的对话框,那么有没有实现呢?肯定是可以的,一般我们是用BrowseForFolder的时候总是习惯性的将Hwnd这个参数设置成0,这样得到的就是一个非模态的文件夹选择对话框。

VB查找文件的两种方法

VB查找文件的两种方法

VB查找文件的两种方法---- VB开发人员都会遇到文件定位的问题。

VB提供的Dir[(pathname[, attributes])]函数应该可以满足各种文件定位问题。

使用Dir函数时,我们必须给它提供文件的全部路径,否则是找不到的。

而有时我们往往是不知道文件的路径的,如果要利用该函数来定位文件,我们必须编写一定的代码。

笔者在利用该函数编制查找文件的函数时,颇费了些工夫,可是发现查找的效率不高,效果不太理想。

那么有没有编码少且更快的方法查找文件呢?笔者后来利用一个 API函数成功地编制了一个高效率的查找文件的函数。

下面一一介绍给大家,起个抛砖引玉的作用,期望大家能编制出更高效的函数。

---- 一. 利用DIR函数查找文件---- Dir[(pathname[, attributes])]是VB提供的用来检查某些文件或目录是否存在的函数,它返回一个 String,用以表示一个文件名、目录名或文件夹名称,返回值必须与指定的模式或文件属性、或磁盘卷标相匹配。

---- 如果文件的路径很清楚,那么确定文件是否存在简单地调用该函数就行了。

如果光知道文件名,甚或只知道文件的后缀,要定位文件的话就需要一定的编码了。

下面的例子用来定位c:\下所有目录内是否有文件Win.ini。

Function FindDirectory(RootPath AsString, Mydirectory() As String)Dim intResult, I, intFind As Integer‘首先查找根目录下的所有子目录MyPath = "c:\" ' 指定路径c:\。

MyName = Dir(MyPath, vbDirectory) ' 找寻第一项。

intResult = 1ReDim Mydirectory(intResult) ‘初始化动态数组Do While MyName < > "" ' 开始循环。

转载 VB中检测文件是否存在

转载 VB中检测文件是否存在

问题:在VB6中检测文件是否存在?方法:1.用Dir函数,如果函数返回为空字符串则文件不存在。

例:If Dir(C:\Win95\My.txt") = "" ThenMsgBox "文件不存在。

"End If注意: 文件名要写完整,包括扩展名.使用Dir("文件名")判断,但是当主调函数也正在用dir并且后续使用没有结束时就会出错。

如果还要对目录或者驱动器进行其他操作:Public Function FileIsExist(Filename As String, Optiona l Attribus As VbFileAttribute = vbArchive) As Boole anDim cName As StringcName = Dir(Filename, Attribus)FileIsExist = (Format(cName, ">") = Format(St ripFile(Filename), ">"))End FunctionPublic Function StripFile(Name As String) As StringDim pos As Integer, pos1 As Integerpos = InStr(Name, "\")While pos <> 0If pos <> 0 Then pos1 = pospos = InStr(pos + 1, Name, "\") WendStripFile = Right(Name, Len(Name) - pos1) End Function2.用FileLen(pathname)函数,该函数返回一个Long,代表一个文件的长度,单位是字节。

VB如何检查文件是否存在

VB如何检查文件是否存在

VB如何检查文件是否存在VB如何检查文件是否存在?悬赏分:0 - 解决时间:2007-8-12 19:35VB如何检查文件是否存在?比如要要检查C盘下的1.exe是否存在要用什么么语句该语句可以加入到if 这里吗? then语句end if提问者:wulai2761 - 经理五级最佳答案if dir("c:\1.exe",vbHidden+vbReadOnly+vbSystem)<>"" then 回答者:狂族魔帝- 经理四级8-9 15:55评价已经被关闭目前有0 个人评价好50% (0)不好50% (0)相关问题vb检查文件是否存在如何用VB检查一网上文件是否存在如何用VB检查某一指定文件是否存在呢??VB 用什么代码可以检测文件是否存在?vb检查文件数量其他回答共2 条用DIR函数用法如下Dir[(pathname[, attributes])]Dir 函数的语法具有以下几个部分:以vbDirectory 属性来调用Dir 不能连续地返回子目录。

以下是VB帮助自带查目录的例子,明确的指出目录必须要用GetAttr' 显示C:\ 目录下的名称。

MyPath = "c:\" ' 指定路径。

MyName = Dir(MyPath, vbDirectory) ' 找寻第一项。

Do While MyName <> "" ' 开始循环。

' 跳过当前的目录及上层目录。

If MyName <> "." And MyName <> ".." Then' 使用位比较来确定MyName 代表一目录。

If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory ThenDebug.Print MyName ' 如果它是一个目录,将其名称显示出来。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MyName = Dir(MyPath, vbDirectory) ' 找寻第一项。
intResult = 1
ReDim Mydirectory(intResult) ‘初始化动态数组
Do While MyName < > "" ' 开始循环。
' 跳过当前的目录及上层目录。
If MyName < > "." And MyName < > ".." Then
' 使用位比较来确定 MyName 代表一目录。
If (GetAttr(MyPath & MyName)
And vbDirectory) = vbDirectory Then
‘分配动态数组实际的元素个数,并保留数组中的数据
End If
End If
MyName = Dir ' 查找下一个目录。
Loop
‘在所有目录里分别查找文件是否存在。
For I = 1 To UBound(Mydirectory)-1
MyFile = Mydirectory(I) & "\win.ini"
---- VB5强大的功能赢得了越来越多开发人员的青睐。如果适当地利用API函数,我们可以说,利用VB可以轻松地完成我们开发中的所有任务。
intFind = Len(Dir(MyFile))
If intFind < > 0 Then MsgBox "找到文件" &
Dir(MyFile) & "在:" & Mydirectory(I)
Next I
End Function
---- 该函数的思路很清晰:先遍历根目录下所有的子目录,然后在每个子目录里查找文件。该函数有一个缺陷:只能查找根目录下的一级子目录,无法遍及整个硬盘。如果要遍及整个硬盘,还需要额外的编码,这里不再多述。
sBuffer = String$(1024, 0)
'查找文件
lResult = SearchTreeForFile
(WhichRootPath, WhichFileName, sBuffer)
'如果文件找到,将返回字符串后续的空格删除
'否则返回一个空字符串
sysFileFind = sBuffer
Else
sysFileFind = ""
End If
Exit Function
L_FILEFINDERROR:
MsgBox "查找文件过程中遇到错误!",
vbInformation, "查找文件错误"
VB查找文件的两种方法.txt偶尔要回头看看,否则永远都在追寻,而不知道自己失去了什么。男人掏钱是恋人关系,女人掏钱是夫妻关系,男女抢着掏钱是朋友关系。男人爱用眼睛看女人,最易受美貌迷惑;女人爱用心看男人,最易受伤心折磨。VB查找文件的两种方法
---- VB开发人员都会遇到文件定位的问题。VB提供的Dir[(pathname[, attributes])]函数应该可以满足各种文件定位问题。使用Dir函数时,我们必须给它提供文件的全部路径,否则是找不到的。而有时我们往往是不知道文件的路径的,如果要利用该函数来定位文件,我们必须编写一定的代码。笔者在利用该函数编制查找文件的函数时,颇费了些工夫,可是发现查找的效率不高,效果不太理想。那么有没有编码少且更快的方法查找文件呢?笔者后来利用一个 API函数成功地编制了一个高效率的查找文件的函数。下面一一介绍给大家,起个抛砖引玉的作用,期望大家能编制出更高效的函数。
Function FindDirectory(RootPath As
String, Mydirectory() As String)
Dim intResult, I, intFind As Integer
‘首先查找根目录下的所有子目录
MyPath = "c:\" ' 指定路径c:\。
"imagehlp.dll" (ByVal lpRoothPath As String,
ByVal lpInputName As String,
ByVal lpOutputName As String) As Long
---- 下面为sysFileFind函数的编码:
Public Function sysFileFind
If lResult Then
iNull = InStr(sBuffer, vbNullChar)
If Not iNull Then
sBuffer = Left$(sBuffer, iNull - 1)
End If
---- 二. 利用API函数查找文件
---- 在使用VB的过程中我深深地体会到,只有充分利用API的函数才能更充分地发挥VB的优势。 API函数 SearchTreeFile可以很快地定位一个文件。借助该函数笔者编了一个快速查找文件的函数sysFileFind.
Declare
Public Declare Function SearchTreeForFile Lib
(ByVal WhichRootPath As String,
ByVal WhichFileName As String) As String
Dim iNull As Integer
Dim lResult As Long
Dim sBuffer As String
On Error GoTo L_FILEFINDERROR
' 如果它是一个目录,将其名称存储在一个数组里。
Mydirectory(intResult) = MyPath & MyName
intResult = intResult + 1
ReDim Preserve Mydirectory(intResult)
sysFileFind = Format(Err.Number)
& " - " & Err.Description
End Function
---- 该函数可以很快遍历整个硬盘,从而查找到我们所需的文件。
---- 三. 总结
---- 上面两个函数都在中文VB5和Win98环境下调试通过。我们可以看到第二种方法编码更简单,效率更高。
---- 一. 利用DIR函数查找文件
---- Dir[(pathname[, attributes])]是VB提供的用来检查某些文件或目录是否存在的函数,它返回一个 String,用以表示一个文件名、目录名或文件夹名称,返回值必须与指定的模式或文件属性、或磁盘卷标相匹配。
---- 如果文件的路径很清楚,那么确定文件是否存在简单地调用该函数就行了。如果光知道文件名,甚或只知道文件的后缀,要定位文件的话就需要一定的编码了。下面的例子用来定位c:\下所有目录内是否有文件Win.ini。
相关文档
最新文档