【发布时间】:2019-03-19 16:26:04
【问题描述】:
文件路径作为字符串从用 C# 编写的程序发送到我的下面的代码,并且我的下面的代码运行。
我下面的代码在名为“RT_CMM_Data_File_Paths.xlsx”的 Excel 工作簿的 C 列中查找不同的文件路径
当 C 列中的文件路径输入错误时,我的以下代码会引发错误。具体来说,文件扩展名被错误输入为“.xlxs”而不是“.xlsx”
我基本上不希望我的程序停止。所以我尝试制作一个错误处理程序,它将记录导致错误的文件路径,然后关闭我的宏,以便 C# 程序可以发送下一个文件路径。
但是,相反,我的代码显示一个消息框“找不到文件路径”或其他内容...当我单击确定...我的程序完成(基本上什么都不做)并关闭并且 C# 程序成功发送下一个文件路径,就像我需要的那样......我不想点击确定......我该如何解决这个问题?
Sub RT_CMM_DATA_COMPILER(Path As String)
Dim ArrNames
Dim wkbTemp As Workbook
Dim Table As Workbook
ArrNames = Array("X-Axis", "Y-Axis", "Z-Axis", "Flatness", _
"Length-X", "Length-Y", "Length-Z", "Length_X", "Length_Y", _
"Length_Z", "Length", "Angle", "Angle-XY", "Angle-XZ", "Angle-YX", _
"Angle-YZ", "Angle-ZX", "Angle-ZY", "Radius", "Diameter", "Flatness", _
"Straightness", "Parallelism", "Perpendicular", "Circularity")
currentData_filePath = Path
On Error GoTo ErrHandler
Workbooks.Open Filename:=currentData_filePath
Set wkbTemp = ActiveWorkbook
watchFolders_list = "S:\PED (Production Engineering Department)\bla...bla...bla...\RT_CMM_Data_File_Paths.xlsx"
Workbooks.Open Filename:=watchFolders_list
Set watchFolders_list = ActiveWorkbook
watchFolders_list.Activate
lastShtRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
Table_Path = WorksheetFunction.VLookup(Left_dataPath, ActiveSheet.Range("A2:C" & lastShtRow), 3, False)
Workbooks.Open Filename:=Table_Path
Set Table = ActiveWorkbook
Application.DisplayAlerts = False
wkbTemp.Saved = True
Table.SaveAs Filename:=Table_Path
Table.Close SaveChanges:=False
Workbooks.Close
Exit Sub
ErrHandler:
Workbooks.Open Filename:="S:\PED (Production Engineering Department)\bla...bla...bla...\Error_Log.xlsx"
Set ErrorLog = ActiveWorkbook
ErrorLog.Activate
unusedRow = Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0).Row
Range("A" & unusedRow).Value = currentData_filePath
Application.DisplayAlerts = False
ErrorLog.Saved = True
ErrorLog.Save
Workbooks.Close
Resume Next
End Sub
【问题讨论】:
标签: excel vba error-handling