Dim obj as Excel.Application
Set obj=New Excel.Application
dim a as object
set a=createobject("Excel.Application")
А можно чуть-чуть подробнее, а то я в этих делах как-то несильно шарю..ANDLL писал(а):Это как раз раннее.
- Код: Выделить всё
dim a as object
set a=createobject("Excel.Application")
Само по себе связывание делает всего лишь на один вызов QueryInterface больше, чем раннее. Но вот использование IDispatch заместо vtable весьма существенно снижает производительность.
Vovik писал(а):А можно чуть-чуть подробнее, а то я в этих делах как-то несильно шарю..
FAKK2 писал(а):Гмм, vtable хранит все доступные методы и интерфейсы,
FAKK2 писал(а):А IDispatch используется, когда vtable не доступен. Тогда, компилятор опрашивает СОМ сервер насчет каждого метода.
Set A=New Object 'раннее
Set A=CreateObject("Object") 'позднее
Dim A as Excel.Application 'vtable
Dim A as Object 'IDispatch
'Данный код совмещает скорость vtable и гибкость позднего связывания
Dim A as Exel.Application
Select case InputBox("Какую версию excel запустить?")
case "2000"
Set A=CreateObject("Excel.Application.9")
case "XP"
Set A=CreateObject("Excel.Application.10")
case "2003"
Set A=CreateObject("Excel.Application.11")
end select
ANDLL писал(а):Скажем так. Использование двух этих операторов как раз и определяет раннее и позднее связывание:
- Код: Выделить всё
Set A=New Object 'раннее
Set A=CreateObject("Object") 'позднее
Dim A as Excel.Application 'раннее - vtable
Dim A as Object 'позднее - IDispatch
Set A=New Excel.Application
Set A=CreateObject("Excel.Application")
Set A=CreateObject("Excel.Application.10")
Dim A as Variant
AlexVBS писал(а):Подскажите, плз, где засада?
Создаю код:
Dim obj As New ShowMsg
Dim Value As String
obj.ShowIt ("Starting...")
Call obj.Test("Indicator", Value)
Form1.Caption = Value
Тоже работает. Пытаюсь добиться позднего связывания:
Dim obj
Dim Value As String
Set obj = CreateObject("AXMsg.ShowMsg")
obj.ShowIt ("Starting...") ' <- Run-time Error (424): Object required !!!
Call obj.Test("Indicator", Value)
Form1.Caption = Value
В чем ошибка??? Помогите разобраться!
Заранее благодарен за ответ.
Сейчас этот форум просматривают: AhrefsBot и гости: 169