エラー発生を考慮したプロパティの取得
Public Function GetPropertySafely(Target As Object, Properties As String, Optional ReturnValueOnError)
On Error GoTo ERROR_LINE
Dim Retval, Names, Name As String, TmpObj As Object, i As Long
Set TmpObj = Target
Names = Split(Properties, ".")
For i = LBound(Names) To UBound(Names) - 1 Step 1
Name = Names(i)
Set TmpObj = CallByName(TmpObj, Name, VbGet)
Next
Name = Names(UBound(Names))
Retval = CallByName(TmpObj, Name, VbGet)
ERROR_LINE:
If Err.Number <> 0 Then
If IsMissing(ReturnValueOnError) Then
Retval = "[ERR-" & Err.Number & "]" & Err.Description & "プロパティ: " & Name
Else
Retval = ReturnValueOnError
End If
End If
GetPropertySafely = Retval
End Function