如何处理运行时错误5174在excel文件不存在的目录?
我需要检查目录中是否存在文件。
如果文件不存在,我应该创build一个新的。
但在运行时,Excel提供了一个错误;
“运行时错误5174:应用程序定义或对象定义的错误”。
VBA中是否有任何exception处理技术来捕获这些运行时错误?
如何克服这个问题,以便我可以创build一个文件,如果不存在?
Dim savename, FileExt, FileName As String Dim i, finalrow As Integer Dim wdvar As Word.Application Dim wrdDoc As Word.Document Set wdvar = CreateObject("Word.Application") wdvar.Visible = True FileName = Environ("UserProfile") & "\Desktop\Report.docx" Set wrdDoc = wdvar.Documents.Open(FileName) With wdvar .Visible = True .Activate .Documents.Add
添加对Microsoft脚本运行时的引用并使用Scripting.FilesystemObject。 它有一个很好用的“FileExists()”函数,可以用来testing一个文件是否存在。
Dim fso as new Scripting.FileSystemobject If (fso.FileExists(strPath)) Then debug.print "File Exists" Else debug.print "File Not Found" End If
error handling可以像这样完成:
sub Main Dim savename, FileExt, FileName As String Dim i, finalrow As Integer Dim wdvar As Word.Application Dim wrdDoc As Word.Document On Error GoTo Main_Error Set wdvar = CreateObject("Word.Application") wdvar.Visible = True FileName = Environ("UserProfile") & "\Desktop\Report.docx" Set wrdDoc = wdvar.Documents.Open(FileName) With wdvar .Visible = True .Activate .Documents.Add '... on error goto 0 exit sub Main_error if err.number = 5174 then 'you may write something here else 'normally a msgbox for the error end if end sub
另外1:如果你想创build文件,你可以从error handling程序中完成,或者你可以简单地检查文件是否存在。 取决于你想要的: – > http://www.rondebruin.nl/win/s9/win003.htm
另外2:不要使用整数,但使用long,并将每个variables声明为一个单独的行,否则将其声明为variables。
Personnaly,我使用这个function:
Public Function File_Exist(sFilePath As String) As Boolean Dim sProv As String On Error GoTo ErrorHandler sProv = Dir(sFilePath, vbDirectory) File_Exist = (sProv <> "") On Error GoTo 0 Exit Function ErrorHandler: MsgBox prompt:="Error on test file= " & sFilePath & vbCrLf & _ Err.Number & vbCrLf & Err.Description End Function
你需要在哪里使用它:
If File_Exist(Filename) Then Set wrdDoc = wdvar.Documents.Open(Filename) Else With wdvar .Visible = True .Activate .Documents.Add End With End If