EXCEL用 VBA判断文件是否存在
实用文库汇编之Excel中用VBA操作文件的方法汇总
实用文库汇编之Excel-VBA操作文件四大方法Excel-VBA操作文件四大方法之一在我们日常使用Excel的时候,不仅会用到当前Excel文件的数据,还经常需要访问其他的数据文件。
这些数据文件可能是Excel文件、文本文件或数据库文件等。
经常有朋友会问如何在vba代码里操作这些数据文件?本文就系统地介绍一下在Excel中应用VBA操作数据文件的方法。
本文主要介绍四种常用的方法:1、利用Excel对象来处理文件;2、利用VBA文件处理语句来处理文件;3、利用FileSystemObject对象来处理文件;4、利用API函数来处理文件。
当然对于数据库文件,还可以利用ADO+SQL的方法操作,不过论坛已经有前辈详细介绍过此类方法,本文就不再重复了。
一、利用Excel对象来处理文件利用Excel对象自带的方法来操作文件是最方便,也是最简单的。
我们主要利用Workbooks集合和Workbook对象的方法来操作文件。
1、打开Excel文件我们可以用Workbooks.Open方法打开一个Excel工作簿。
Workbooks.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)其中FileName是必选的参数,表示要打开的工作簿名,如果没有指定路径,则代表当前路径。
另外14个是可选参数,除了密码参数,其他的一般很少用。
具体的含义可以参看VBA的帮助。
例:Workbooks.Open "F:\test.xls"可以打开F盘的test.xls文件。
2、打开文本文件使用Open方法也可以打开文本文件,但建议使用OpenText方法。
VBA 中的文件操作技巧
VBA 中的文件操作技巧VBA(Visual Basic for Applications)是一种用于编写宏和自动化任务的编程语言,广泛应用于 Microsoft Office 系列软件中。
在 VBA 中,文件操作是一个常见且重要的任务。
本篇文章将介绍一些 VBA 中的文件操作技巧,帮助读者更高效地处理文件。
1. 创建、打开和关闭文件首先,让我们学习如何在 VBA 中创建、打开和关闭文件。
要创建一个新文件,可以使用 `Filesystemobject` 对象的 `CreateTextFile` 方法。
例如:```vbaDim fso As ObjectSet fso = CreateObject("Scripting.FileSystemObject")Dim myFile As ObjectSet myFile = fso.CreateTextFile("C:\文件路径\文件名.txt")```要打开一个已经存在的文件,可以使用 `Open` 语句。
例如:```vbaDim fileNumber As IntegerfileNumber = FreeFileOpen "C:\文件路径\文件名.txt" For Input As fileNumber '执行文件操作Close fileNumber```关闭文件使用 `Close` 关键字。
这样可以确保文件的正确关闭,以避免资源泄漏。
2. 读取和写入文件VBA 提供了许多方法来读取和写入文件的内容。
以下是其中两个常用的方法。
使用 `Input` 函数可以从文件中读取一行文本。
例如:```vbaDim textLine As StringLine Input #fileNumber, textLine```使用 `Print` 函数可以将文本写入文件中。
例如:```vbaPrint #fileNumber, "要写入的文本"```若要读取或写入整个文件而不仅仅是一行文本,则可以使用 `InputB` 函数和 `Print #fileNumber,` 进行循环操作。
Excel VBA常用代码总结1
Excel VBA常用代码总结1•改变背景色Range(”A1”).Interior。
ColorIndex = xlNoneColorIndex一览•改变文字颜色Range("A1").Font.ColorIndex = 1•获取单元格Cells(1,2)Range(”H7")•获取范围Range(Cells(2,3), Cells(4, 5))Range(”a1:c3”)’用快捷记号引用单元格Worksheets(”Sheet1”)。
[A1:B5]•选中某sheetSet NewSheet = Sheets("sheet1")NewSheet。
Select•选中或激活某单元格'“Range”对象的的Select方法可以选择一个或多个单元格,而Activate方法可以指定某一个单元格为活动单元格.'下面的代码首先选择A1:E10区域,同时激活D4单元格:Range("a1:e10”).SelectRange(”d4:e5”).Activate’而对于下面的代码:Range("a1:e10")。
SelectRange("f11:g15")。
Activate’由于区域A1:E10和F11:G15没有公共区域,将最终选择F11:G15,并激活F11单元格。
•获得文档的路径和文件名ActiveWorkbook.Path '路徑 '名稱ActiveWorkbook。
FullName '路徑+名稱'或将ActiveWorkbook换成thisworkbook•隐藏文档Application.Visible = False•禁止屏幕更新Application。
ScreenUpdating = False•禁止显示提示和警告消息Application。
DisplayAlerts = False•文件夹做成strPath = ”C:\temp\"MkDir strPath•状态栏文字表示Application.StatusBar = ”计算中"•双击单元格内容变换Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If (Target.Cells.Row 〉= 5And Target。
Excel-VBA操作文件四大方法之二 利用VBA文件处理语句来处理文件
Excel-VBA操作文件四大方法之二二、利用VBA文件处理语句来处理文件VBA包含了许多用于文件操作的语句和函数,可以满足绝大多数情况下的文件操作要求。
下面我们按照操作目的进行一一介绍。
(一)文件处理 语句语法:Name oldpathname As newpathname功能:重命名一个文件、目录、或文件夹,移动一个文件。
说明:在一个已打开的文件上使用Name,将会产生错误。
进行文件操作时,一定要注意错误处理。
示例:On Error Resume Next '错误处理Name "f:\TEST.xls" As "f:\TEST123.xls" '重命名Name "f:\TEST.xls" As "f:\dll\TEST.xls" '移动文件Name "f:\TEST.xls" As "d:\TEST123.xls" '跨驱动器移动并重命名文件注意:Name不能移动一个目录或文件夹。
2、FileCopy 语句语法:FileCopy source, destination功能:复制一个文件。
说明:如果对一个已打开的文件使用FileCopy 语句,则会产生错误。
示例:FileCopy "f:\TEST.xls", "e:\TEST.xls" '从F盘复制TEST.xls到E盘3、Kill 语句语法:Kill pathname功能:从磁盘中删除文件。
说明:Kill 支持多字符(*) 和单字符(?) 的统配符来指定多重文件。
如果使用Kill 来删除一个已打开的文件,则会产生错误。
示例:Kill "f:\TEST.xls" ’删除F盘的TEST.xls文件Kill "f:\*.xls" ' 删除F盘所有xls文件4、GetAttr 函数语法:GetAttr(pathname)功能:获取一个文件、目录、或文件夹的属性。
VBA实用小程序80:判断文件是否打开
VBA实用小程序80:判断文件是否打开excelperfect如果你的项目使用Excel文件以外的文件,则应在尝试读取或写入文件之前测试该文件是否已被其他进程打开。
这里给出了一个名为IsFileOpen的函数,如果指定的文件已打开,则返回True,如果指定的文件未打开,则返回False。
如果文件被另一个进程打开,则打开它的尝试将失败。
如果该文件未在使用中,则尝试打开它会成功。
一旦打开,文件将立即关闭而不保存。
程序代码如下:Option Compare Text'该函数确定以FileName命名的文件是否被另一个进程打开.'如果文件已打开,则函数返回 True, 如果文件未打开, 返回False.'如果由FileName命名的文件或不是有效的文件名,'如果提供了参数ResultOnBadFile,则等于该参数的值.'如果没有提供参数ResultOnBadFile,并且FileName不存在或'是无效的文件名, 则结果为 False.Public Function IsFileOpen(FileName As String, _Optional ResultOnBadFile As Variant) As VariantDim FileNum As IntegerDim ErrNum As IntegerDim V AsVariantOn Error Resume Next'如果传递一个空字符串,没有测试的文件,因此返回False.If Trim(FileName) = vbNullString ThenIf IsMissing(ResultOnBadFile) = True ThenIsFileOpen = FalseElseIsFileOpen = ResultOnBadFileEnd IfExit FunctionEnd If'如果文件不存在V =Dir(FileName, vbNormal)If IsError(V) = True ThenIf IsMissing(ResultOnBadFile) = True Then IsFileOpen = FalseElseIsFileOpen = ResultOnBadFileEnd IfExit FunctionElseIf V= vbNullString ThenIf IsMissing(ResultOnBadFile) = True Then IsFileOpen = FalseElseIsFileOpen = ResultOnBadFileEnd IfExit FunctionEnd IfFileNum =FreeFile()'试图打开文件并锁定.Err.ClearOpenFileName For Input Lock Read As #FileNum ErrNum =Err.Number'关闭文件CloseFileNumOn ErrorGoTo 0'检查发生的错误.SelectCase ErrNumCase 0'没有发生错误.'文件没被另一用户打开.IsFileOpen = FalseCase 70''访问拒绝'错误号'文件已被另一用户打开.IsFileOpen = TrueCase Else'另一错误发生.假设打开.IsFileOpen = TrueEnd SelectEnd Function其中:•参数FileName,要测试的文件名。
如何在VBA判断EXCEL或WORD文件已经打开,并用代码关闭
如何在VBA判断EXCEL或WORD文件已经打开,并用代码关闭字体: 小中大| 打印发表于: 2003-6-17 20:17 作者: huanghai 来源: Office中国社区门户如何在VBA(ACCESS)中用代码判断一个EXCEL或WORD文件已经打开,并用代码关闭我也来说两句查看全部回复最新回复∙竹笛(2003-6-18 06:17:00)笨办法,你试试:1、在ACCESS代码中获取那个EXCEL文件中一个指定的cells的value2、如果出错……,您知道了吧。
3、关闭这个EXCEL:olxApp.QuitSet olxApp = Nothing '这个你是知道的∙李寻欢(2003-6-18 06:20:00)Dim MyXL As ObjectSet MyXL = GetObject(, "Excel.Application")For Each axls In MyXL.workbooksIf InStr(1, , "book1.xls", 1) Then'axls.Close '关闭文档MyXL.Quit '退出excelExit ForEnd IfNext axlsSet MyXL = Nothing[此贴子已经被作者于2003-6-17 22:20:35编辑过]∙eio (2003-6-18 06:58:00)嘿,如果打开EXECL程序,其默认“book1”,上述程序就无能为力了。
∙李寻欢(2003-6-18 15:20:00)干嘛不试一试再发言∙eio (2003-6-18 16:23:00)试过了,我不是莽语的.∙marco2 (2003-6-18 16:37:00)EIO,你试的是不正确的,因为可以将“book1.xls”改为默认打开的“book1”即可,这时依然可以找到工作簿。
但寻欢,这个问题你试过没有?当打开两个Excel.application,而你要查找的对象却在第二个工程里时,你提供的方法却无能为力了!不过你的方法还是非常棒的,至少已经搞定了一半,而且是纯VBA实现的!:)∙huanghai (2003-6-18 16:53:00)谢谢寻欢,原来核心就是GETOBJECT,特帖帮助内容,与大家分享:GetObject 函数示例该示例使用GetObject 函数来获取对指定的Microsoft Excel 的工作表(MyXL) 的引用。
VBA中的表格数据校验与验证技巧
VBA中的表格数据校验与验证技巧在VBA中,表格数据校验与验证是非常重要的,它可以确保我们的数据是准确合法的,并且能够有效地管理和处理数据。
本文将介绍一些VBA中常用的表格数据校验与验证技巧,帮助读者更好地利用VBA处理表格数据。
一、数据格式验证数据格式验证是确保数据符合特定格式要求的一种校验手段。
在VBA中,我们可以使用内置的数据验证功能来进行数据格式验证。
以下是一些常用的数据格式验证技巧:1. 数值范围限制:在表格中,我们可能需要限制某一列的数值在特定的范围内。
可以通过以下方式实现:```vbaWith Range("A1:A10").Validation.Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _Formula1:=1, Formula2:=100.IgnoreBlank = TrueEnd With```上述代码将限制A1:A10范围内的数值为整数,并且只能在1到100之间。
2. 文本长度限制:除了数值范围外,我们还可以限制某一列的文本长度。
可以通过以下方式实现:```vbaWith Range("B1:B10").Validation.Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _Formula1:=1, Formula2:=10.IgnoreBlank = TrueEnd With```上述代码将限制B1:B10范围内的文本长度在1到10个字符之间。
3. 列表限制:有时我们需要限制某一列的值必须在一组预定的列表中。
可以通过以下方式实现:```vbaWith Range("C1:C10").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _Formula1:="Option1,Option2,Option3".IgnoreBlank = TrueEnd With```上述代码将限制C1:C10范围内的值必须在"Option1,Option2,Option3"这个列表中。
Excel VBA操作文本文档TXT文件的方法(一)
VBA使用FileSystemObject将读取或写入文本文件(一)有时,我们需要将一个文本文件中的数据读取到Excel单元格中,或将指定单元格的内容按指定的格式导出到文本文件中,这时,我们就需要使用Scripting.FileSystemObject对象来进行操作。
在接下来的几篇里我们介绍如何使用FileSystemObject对象操作文本文件的。
工欲善其事,必先利其器,那么我们就先花几篇文章来详细介绍下FileSystemObject对象。
一、如何创建FileSystemObject对象在VBA中,是通过CreateObject函数返回FileSystemObject对象。
示例:Dim fso As ObjectSet fso=CreateObject("Scripting.FileSystemObject")二、FileSystemObject主要方法介绍1、CreateTextFile方法:用于创建一个指定文件名,并返回一个可操作的TextStream对象。
语法:object.CreateTextFile(filename[,overwrite[,unicode]])示例1:在C:\FSOTest\中创建一个名为testFile的文本文件,并写入一行“CreateTextFile Test”:Sub CreateFile()Dim sFile As Object, FSO As ObjectSet FSO = CreateObject("Scripting.FileSystemObject")Set sFile = FSO.CreateTextFile("C:\FSOTest\TestFile.txt",True)sFile.WriteLine ("CreateTextFile Test")sFile.CloseSet sFile = NothingSet FSO = NothingEnd Sub2、DeleteFile方法:用于删除一个指定的文件。
ExcelVBA文件快速查找
ExcelVBA文件快速查找今天讲解一个不难,但是对大部分来说,非常实用的知识点,那就是文件查找。
我们当然也可以通过微软系统提供的查找功能直接查找文件。
但是就我感觉,它不够方便快速。
查找程序,对公司共享文件的查找打开时非常不错的,甚至可以保证公司的网络文件安全。
我们可以记录最后一次打开人,防止文件的误删除等等。
具体的样式如下图:第一步、制作好表格,插入两个圆角矩形,并输入文字。
第二步,将将两个矩形右键编辑文字,输入,重置和查找,最后在格式一栏将圆角矩形设置为无填充颜色。
第三步,开始写程序,一个是将输入的订单号删除Sub 重置输入区()Range('C2') =''End Sub第四步,第二个程序是查找文件并打开。
查找文件分两种,第一种是知道具体在哪个文件夹位置的,第二种有好多个文件夹,需要循坏查找文件夹来确定文件位置再打开。
Sub 打开文件夹()ddh = 'YJ' &Range('b3')If Len(Range('b3')) <> 8ThenMsgBox '单号有误'Exit SubEnd If'第一种,查找已知在某个文件夹的文件If Dir('\\192.168.1.21\d\工艺拆单资料\2017\待优化\'& ddh, 16) <> Empty ThenShell 'explorer \\192.168.1.21\d\工艺拆单资料\2017\待优化\'& ddh, vbNormalFocusExit SubEnd If''第二种,查找已知在某个文件夹的文件Dim MyName, Dic, Did, IDdh11 = 'YJ' & Range('b3')Set Dic = CreateObject('Scripting.Dictionary') '创建一个字典对象Set Did = CreateObject('Scripting.Dictionary')Dic.Add ('\\192.168.1.21\d\工艺拆单资料\'),'' '遍历寻找地址I= 0Do While I < Dic.Countke = Dic.keys '开始遍历字典MyName = Dir(ke(I), vbDirectory) '查找目录Do While MyName <> ''If MyName <> '.' And MyName <> '..' ThenIf (GetAttr(ke(I) & MyName) And vbDirectory) = vbDirectory Then '如果是次级目录Dic.Add (ke(I) & MyName& '\'), '' '就往字典中添加这个次级目录名作为一个条目End IfIf MyName Like '*' & Ddh11 & '*' Then '打开所在文件夹ddddz = 'explorer '& ke(I) & MyNameShell ddddz, vbNormalFocusExit SubEnd IfEnd IfMyName = Dir '继续遍历寻找LoopI= I 1LoopMsgBox '文件夹不存在'End Sub第五步,将程序与圆角矩形关联。
ExcelVBA-目录及文件操作汇总
ExcelVBA-目录及文件操作汇总
主要介绍dir,kill,name,mkdir,rmdir,filecopy及filedialog等
注意:介绍的示例是以正常条件下的,非正常条件的请预先判断或者使用on error容错等手段
不正常条件如:文件不存在的时候使用filecopy,文件打开的时候使用name等。
可以对比fso,看看具体差别
一、dir判断文件或文件夹是否存在
/forum. ... 1258425&pid=8556244
示例:
/forum. ... 1258425&pid=8556257
二、kill 删除文件
/forum. ... 1258425&pid=8556266
三、name 重命名文件名
/forum. ... 1258425&pid=8556267
四、mkdir创建文件夹及rmdir删除文件夹
/forum. ... 1258425&pid=8556271
五、filecopy拷贝文件
/forum. ... 1258425&pid=8556273
六、filedialog文件对话框(第一部分)
/forum. ... 1258425&pid=8556274
六、filedialog文件对话框(第二部分)
/forum. ... 425&pid=8556331
第七部分,部分属性相关的函数
/forum. ... 1258425&pid=8556333
第七部分,部分属性相关的函数-示例/forum. ... 425&pid=8556339。
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对象。
Excel-VBA操作文件四大方法
在我们日常使用Excel的时候,不仅会用到当前Excel文件的数据,还经常需要访问其他的数据文件。
这些数据文件可能是Excel文件、文本文件或数据库文件等。
经常有朋友会问如何在vba代码里操作这些数据文件?本文就系统地介绍一下在Excel中应用VBA操作数据文件的方法。
本文主要介绍四种常用的方法:1、利用Excel对象来处理文件;2、利用VBA文件处理语句来处理文件;3、利用FileSystemObject对象来处理文件;4、利用API函数来处理文件。
当然对于数据库文件,还可以利用ADO+SQL的方法操作,不过论坛已经有前辈详细介绍过此类方法,本文就不再重复了。
一、利用Excel对象来处理文件利用Excel对象自带的方法来操作文件是最方便,也是最简单的。
我们主要利用Workbooks集合和Workbook对象的方法来操作文件。
1、打开Excel文件我们可以用Workbooks.Open方法打开一个Excel工作簿。
Workbooks.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended,Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)其中FileName是必选的参数,表示要打开的工作簿名,如果没有指定路径,则代表当前路径。
另外14个是可选参数,除了密码参数,其他的一般很少用。
具体的含义可以参看VBA的帮助。
例:Workbooks.Open "F:\test.xls"可以打开F盘的test.xls文件。
2、打开文本文件使用Open方法也可以打开文本文件,但建议使用OpenText方法。
此方法是载入一个文本文件,并将其作为包含单个工作表的工作簿进行分列处理,然后在此工作表中放入经过分列处理的文本文件数据。
判断指定工作簿是否打开的2种方法
判断指定工作簿是否打开的2种方法方法一:使用VBA代码判断工作簿是否打开在VBA中,可以使用Workbooks对象的Item属性和Open方法判断指定工作簿是否打开。
示例代码如下:```Sub CheckWorkbookOpenDim wb As WorkbookDim filePath As String'设置工作簿的路径和文件名filePath = "C:\Path\To\Workbook.xlsx"'使用Item属性获取指定路径下的工作簿On Error Resume NextSet wb = Workbooks.Item(filePath)On Error GoTo 0'判断工作簿是否已打开If Not wb Is Nothing ThenMsgBox "工作簿已打开。
"ElseMsgBox "工作簿未打开。
"End IfEnd Sub```该方法使用了Workbooks对象的Item属性获取指定路径下的工作簿对象。
如果指定的工作簿已经打开,则可以通过设置vbModeless参数为True来避免出错;如果工作簿未打开,则会产生一个错误,通过On Error Resume Next语句可以忽略此错误。
最后通过判断wb是否为Nothing来确定工作簿是否已打开。
方法二:使用FileSystemObject对象判断工作簿是否打开示例代码如下:```Sub CheckWorkbookOpenDim fso As FileSystemObjectDim filePath As String'设置工作簿的路径和文件名filePath = "C:\Path\To\Workbook.xlsx"'创建FileSystemObject对象Set fso = New FileSystemObject'判断工作簿是否已打开If fso.FileExists(filePath) ThenMsgBox "工作簿已打开。
VBA中的文件操作方法与实例
VBA中的文件操作方法与实例在VBA(Visual Basic for Applications)中,文件操作是一项非常常见且重要的任务。
通过文件操作,我们可以实现文件的创建、读取、写入和删除等各种功能。
本文将介绍VBA中常用的文件操作方法,并通过实例来演示它们的用法。
一、文件路径和文件名的获取在进行文件操作之前,我们需要确定文件与其所在文件夹的路径以及文件名。
VBA提供了一系列方法来获取文件的路径和文件名。
1. 获取文件路径:- 使用`CurDir`函数可以获取当前工作目录的路径。
例如,`CurDir`函数返回"E:\Documents",表示当前工作目录的路径是"E:\Documents"。
- 使用`ChDir`语句可以更改当前工作目录。
例如,`ChDir "E:\Documents"`将当前工作目录更改为"E:\Documents"。
- 使用`Application.FileDialog(msoFileDialogFilePicker).Show`可以打开文件选择对话框,让用户选择文件,并返回所选文件的路径。
2. 获取文件名:- 使用`Dir`函数可以获取指定文件夹下的一个文件名。
例如,`filename = Dir("E:\Documents\Test.txt")`将"Test.txt"赋值给变量filename。
- 使用`FileDateTime`函数可以返回指定文件的创建日期和时间。
例如,`createdTime =FileDateTime("E:\Documents\Test.txt")`将"Test.txt"的创建日期和时间赋值给变量createdTime。
- 使用`FileName`属性可以获取包含文件名的完整路径。
例如,`filename = ThisWorkbook.FullName`将当前工作簿的完整路径赋值给变量filename。
VBA判断文件及文件夹是否存在
VBA判断文件及文件夹是否存在大家好,我们今日将解'VBA信息获取与处理'教程中第十七个专题'文件及文件夹信息的获取及操作'的第一节'判断文件及文件夹是否存在',这个专题是非常实用的知识点,希望大家能掌握利用。
教程会提供配套的程序文件。
第一节判断文件及文件夹是否存在在实际的工作中,我们经常要利用VBA打开一个文件,通常要先判断将要打开的这个文件是否存在,如果不存在,则要采取一些必要的代码处理,那么如何来判断这个文件或者文件夹是否存在呢?这讲我们将介绍两种办法实现,其一是DIR函数,其二是使用FSO对象来完成。
1 DIR函数的意义和用法Dir函数返回一个 String,它表示与指定模式或文件属性或驱动器的卷标下匹配的文件、目录或文件夹的名称。
1)语法:Dir [ (pathname, [ attributes ] ) ]2)参数的意义:Pathname:可选。
指定文件名的字符串表达式,可包括目录或文件夹和驱动器。
如果未找到 pathname,则返回零长度字符串 ('')。
Attributes可选。
指定文件属性的常量或数值表达式。
如果省略它,则返回与 pathname 匹配但没有属性的文件。
attributes 参数设置为:vbNormal 0 (默认)指定没有属性的文件。
vbReadOnly 1 指定只读文件以及不带属性的文件。
vbHidden 2 指定隐藏文件以及不带属性的文件。
vbSystem4 指定系统文件以及不带属性的文件。
在Macintosh 上不可用。
vbVolume8 指定卷标;如果指定任何其他属性,则忽略vbVolume。
在 Macintosh 上不可用。
vbDirectory 16 指定目录或文件夹以及不带属性的文件。
vbAlias 64 指定文件名为别名。
仅在 Macintosh 上可用。
3)注意点:在 Microsoft Windows中,Dir 支持使用多字符 (*) 和单字符 (?) 通配符来指定多个文件。
VB打开Excel文件
'xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏
xlApp.Visible = True
End Sub
单击单元格,弹出对话框
设在Sheet1中的A1选定则弹出对话框
Set xlApp = GetObject(, "Excel.Application") '判断Excel是否打开
If Err.Number <> 0 Then
Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
For Each fd In fs.GetFolder(sFolder).SubFolders
GetPictures fd.Path, IncludeSubfolders
Next
End If
End Sub
Sub Sort(arr() As picFile)
Dim tmpFile As picFile
Option Base 1
Dim fs
Dim f
Dim fd
Public Type picFile
FullName As String
DateCreated As Date
'LaseModified As Date
End Type
Dim iCount As Integer
xlApp.Visible = False '设置EXCEL对象不可见
Excel-VBA判断文件是否存在磁盘中
Excel-VBA判断文件是否存在磁盘中应用场景利用VBA保存工作薄时,如果已经存在同名文件,则回覆盖,最后的方式是首先判断文件是否存在,在进行相应操作知识要点1:Workbook.FullName 属性返回对象的名称,包含磁盘路径,路径名称2:Dir 函数返回一个 String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配3:利用DIR函数获取文件名,如果文件名长度大于0,则表示文件存在,而文件是否打开,则必须通过循环检测当前打开的所有文件名是否与指定的路径与名称相同。
Sub 判断文件是否存在() '用于文件保存前判断指定名称的文件是否存在,以及是否已打开Dim filename As String, pathstr As String, i As Integerpathstr = 'D:\生成表' '路径filename = '单价表.xlsx' '文件名For i = 1 To Workbooks.Count '遍历所有打开的文件'如果打开的工作薄全部指定的路径加文件名,那么提示已经打开,且退出程序If Workbooks(i).FullName = pathstr & '\' & filename Then MsgBox filename & '已打开,无法以该名保存。
': Exit Sub Next'如果文件存在,那么提示If Len(Dir(pathstr & '\' & filename)) > 0 ThenMsgBox pathstr & '目录中已存在“' & filename & '”,如果保存将会覆盖原有数据,继续码'End If End Sub。
VBA文件及文件夹操作
VBA文件及文件夹操作1.VBA操作文件及文件夹on error resume next下测试A,在D:\下新建文件夹,命名为folder方法1:MkDir "D:\folder"方法2:Set abc = CreateObject("Scripting.FileSystemObject")abc.CreateFolder ("D:\folder")B,新建2个文件命名为a.xls和b.xlsWorkbooks.AddActiveWorkbook.SaveAs Filename:="D:\folder\a.xls"ActiveWorkbook.SaveAs Filename:="D:\folder\b.xls"C,创建新文件夹folder1并把a.xls复制到新文件夹重新命名为c.xls MkDir "D:\folder1"FileCopy "D:\folder\a.xls", "D:\folder1\c.xls"D,复制folder中所有文件到folder1Set qqq = CreateObject("Scripting.FileSystemObject")qqq.CopyFolder "D:\folder", "D:\folder1"D,重命名a.xls为d.xlsname "d:\folder1\a.xls" as "d:\folder1\d.xls"E,判断文件及文件夹是否存在Set yyy = CreateObject("Scripting.FileSystemObject")If yyy.FolderExists("D:\folder1) = True Then ...If yyy.FileExists("D:\folder1\d.xls) = True Then ...F,打开folder1中所有文件Set rrr = CreateObject("Scripting.FileSystemObject")Set r = rrr.GetFolder("d:\folder1")For Each i In r.FilesWorkbooks.Open Filename:=("d:\folder1\" + + "")NextG,删除文件c.xlskill "d:\folder1\c.xls"H,删除文件夹folderSet aaa = CreateObject("Scripting.FileSystemObject")aaa.DeleteFolder "d:\folder"2.excel vba一次性获取文件夹下的所有文件名的方法小生今天上网下载了一个财务常用报表的文件包,里面有几百个excel工作表,要是手工一个一个的获得文件名的话,那我可是要忙十天半月哦。