Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Заменитель "OLE/COM Viewer", Ищу инструмент чтобы заглянуть внутрь OLE/COM объекта до самого последнего уровня детализации
 
Коллеги, здравствуйте!

Сравнительно продолжительное время я нахожусь в поиске утилиты, сродни "OLE/COM Viewer". Т.е. искомая утилита должна бы делать все то, что делает "OLE/COM Viewer", т.е. у любого OLE/COM объекта отображает внутреннее устройство: набор интерфейсов, у каждого интерфейса - набор методов и свойств. Штатная утилита "OLE/COM Viewer", к сожалению, отображает информацию не всех объектов и, по закону противности, самые интересующие объекты оказываются ей недоступны. Например, сейчас интересен "File Open Dialog" из библиотеки "ComDlg32.dll". Утилита показывает только первый уровень детализации - набор интерфейсов и их описание. Провалиться глубже, например в интерфейс "IFileOpenDialog" уже не может. Сообщает "IDataObject interface viewer only supports IID_IDataObject".
Описания в документации не всегда достаточно, т.к. я пробую получить доступ к разным объектам OLE/COM из-под VBA. А документация написана, чаще всего для С. Поэтому приходится заполнять разрыв между концепцией С и VBA. Для этого очень полезной может оказаться такая утилита.

Прошу сообщить о достойном инструменте.
Благодарю за Ваш ответ!
Обработка события Workbook_NewSheet, Ошибка при выполнении, хотя при отладке ошибки нет.
 
Коллеги, здравствуйте!

Извиняюсь, никак не могу размер фото отрегулировать....
Буду оченьь признателен Вам за помощь!

Обрабатывал событие Workbook_NewSheet и Столкнулся с непонятным явлением:
в режиме трассировки (пошаговое выполнение) макроса ошибки нет.
А в штатном режиме возникает ошибка CcodeName = ""
Скрытый текст

При этом ожидаем закономерного результат CcodeName = "Лист3". В диспетчере проекта так и есть
[img]file:///C:/Users/Surface/Desktop/_ram/vbaProject.PNG[/img]
Код устроен очень просто:
код в событии книги -
Код
Private Sub Workbook_NewSheet(ByVal sh As Object)
'Stop                                                      ' для включения пошагового выполнения.
    M2.NewSheet sh
End Sub

код в модуле - M2.NewSheet
Код
Option Explicit
Sub NewSheet(ByVal sh As Object)
Dim sh_CodeName As String, sh_Name As String, i As Integer
 i = 0
ret:
sh_CodeName = sh.CodeName: sh_Name = sh.Name
Do While sh_CodeName = "" And i < 10
 Application.Wait (Now + TimeValue("0:00:01"))             ' даже задержку на 10 секунд поставил. не помогла
 i = i + 1
GoTo ret
Loop
MsgBox "Code Name - " & sh_CodeName & vbCrLf & "Name - " & sh_Name, vbOKOnly, "СООБЩЕНИЕ ОТ WorkBook.NewSheet"
End Sub
Вопрос простой: как добиться исправной работы? Есть какие-нибудь идеи? Мои все закончились...
Но самое непонятное - иногда срабатывает правильно....
Изменено: Levi.S - 20.04.2020 02:02:02
Страницы: 1
Наверх