文章背景:在操作Excel文件时,有时需要判断指定的工作表是否存在,根据判断结果进行后续操作。下面提供两种自定义函数。
(1)遍历法
Function IsExistsSheetName1(strPath As String, SheetName As String) As Boolean
'如果目标工作表存在,返回TRUE;否则,返回FALSE
'strPath:指定文件的全路径(Full path)
Dim tempSheet As Worksheet
Workbooks.Open strPath
IsExistsSheetName1 = False
For Each tempSheet In ActiveWorkbook.Worksheets
If tempSheet.name = SheetName Then
IsExistsSheetName1 = True
Exit For
End If
Next tempSheet
ActiveWorkbook.Close SaveChanges:=False
End Function
如果Excel文件内有很多张工作表,则遍历法比较费时间,下面介绍试错法。
(2)试错法
Function IsExistsSheetName2(strPath As String, SheetName As String) As Boolean
'如果目标工作表存在,返回TRUE;否则,返回FALSE
'strPath:指定文件的全路径(Full path)
Dim tempSheet As Worksheet
Workbooks.Open strPath
IsExistsSheetName2 = False
On Error Resume Next
Set tempSheet = ActiveWorkbook.Sheets(SheetName)
If Err.Number = 0 Then
IsExistsSheetName2 = True
End If
On Error GoTo 0
ActiveWorkbook.Close SaveChanges:=False
End Function
注意:需要确保指定路径(strPath)的文件已存在;否则,程序会报错。
参考资料:
[1] vba判断sheet是否存在(https://blog.csdn.net/jyh_jack/article/details/103456259)
[2] 快速判断工作簿中是否存在指定工作表(https://blog.csdn.net/taller_2000/article/details/104111477)