Есть пользовательская функция, которая выдает ширину и высоту фотофайла по ссылке. Однако иногда - раз в сто срабатываний - она выдает ошибку #ЗНАЧ! Может с файлами jpg что-то не так.
Как должен выглядеть этот код, с добавкой обработчика ошибок (On Error ...) ? Чтобы если уж ошибка появлялась, то обработчик (On Error ...) - просто бы выдавал не ошибку #ЗНАЧ!, а простое отсутствие срабатывания - и пользовательская функция ждала бы следующего срабатывания. [vba]
Код
Function Razmer(ByVal sFilePath) As String Dim objShell As Object Dim objFolder As Object Dim objItem As Object Dim strDate$ Dim ObjFile As Object
Set ObjFile = CreateObject("Scripting.FileSystemObject").getfile(sFilePath) Set objFolder = CreateObject("Shell.Application").Namespace(ObjFile.parentFolder.Path) Set objItem = objFolder.Items.Item(ObjFile.Name) strDate = objFolder.GetDetailsOf(objItem, 31) Set objItem = Nothing: Set objFolder = Nothing: Set ObjFile = Nothing Razmer = strDate End Function
[/vba]
Всем доброго времени суток. Вопрос по вба:
Есть пользовательская функция, которая выдает ширину и высоту фотофайла по ссылке. Однако иногда - раз в сто срабатываний - она выдает ошибку #ЗНАЧ! Может с файлами jpg что-то не так.
Как должен выглядеть этот код, с добавкой обработчика ошибок (On Error ...) ? Чтобы если уж ошибка появлялась, то обработчик (On Error ...) - просто бы выдавал не ошибку #ЗНАЧ!, а простое отсутствие срабатывания - и пользовательская функция ждала бы следующего срабатывания. [vba]
Код
Function Razmer(ByVal sFilePath) As String Dim objShell As Object Dim objFolder As Object Dim objItem As Object Dim strDate$ Dim ObjFile As Object
Set ObjFile = CreateObject("Scripting.FileSystemObject").getfile(sFilePath) Set objFolder = CreateObject("Shell.Application").Namespace(ObjFile.parentFolder.Path) Set objItem = objFolder.Items.Item(ObjFile.Name) strDate = objFolder.GetDetailsOf(objItem, 31) Set objItem = Nothing: Set objFolder = Nothing: Set ObjFile = Nothing Razmer = strDate End Function
Предположу, что ошибка из-за того, что в объекте "objFolder" находится Nothing (я пока разбирался в этом коде наблюдал странное поведение в этой строке кода).
[vba]
Код
Function Razmer(ByVal sFilePath) As String Dim objFolder As Object, objItem As Object, ObjFile As Object Dim strDate$
Set ObjFile = CreateObject("Scripting.FileSystemObject").getfile(sFilePath) Do Set objFolder = CreateObject("Shell.Application").Namespace(ObjFile.parentFolder.Path) DoEvents Loop While objFolder Is Nothing Set objItem = objFolder.Items.Item(ObjFile.Name) strDate = objFolder.GetDetailsOf(objItem, 31) Set objItem = Nothing: Set objFolder = Nothing: Set ObjFile = Nothing Razmer = strDate End Function
[/vba]
Предположу, что ошибка из-за того, что в объекте "objFolder" находится Nothing (я пока разбирался в этом коде наблюдал странное поведение в этой строке кода).
[vba]
Код
Function Razmer(ByVal sFilePath) As String Dim objFolder As Object, objItem As Object, ObjFile As Object Dim strDate$
Set ObjFile = CreateObject("Scripting.FileSystemObject").getfile(sFilePath) Do Set objFolder = CreateObject("Shell.Application").Namespace(ObjFile.parentFolder.Path) DoEvents Loop While objFolder Is Nothing Set objItem = objFolder.Items.Item(ObjFile.Name) strDate = objFolder.GetDetailsOf(objItem, 31) Set objItem = Nothing: Set objFolder = Nothing: Set ObjFile = Nothing Razmer = strDate End Function