如何处理运行时错误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