Форум: "Основная";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
ВнизКак и откуда вытащить все имена процедур, функций и констант VBA Найти похожие ветки
← →
Slym (2003-10-10 08:06) [0]Как и откуда вытащить все имена процедур, функций и констант VBA.
Редактор VBA берет откуда-то!
← →
KSergey (2003-10-10 08:22) [1]О каких именно константах идет речь?
Расскажите миру, для какого COM-сервера MS Office (как я подозреваю) вы пытаетесь работать.
← →
Digitman (2003-10-10 08:24) [2]какого VBA ? конкретно ?
речь идет о реализации какого-то из VBA для одного из продуктов в составе МС ОФиса ?
эта инф-ция хранится как правило в отдельных файлах с расширением *.olb (Object Library) или *.tlb (Type Library)
библиотеки типов как правило регистрируются продуктом, их представляющим, в реестре, в ключе HKEY_CLASSES_ROOT\TypeLib, после чего они становятся доступными для импорта в Делфи (см. Project | Import Type Library ..)
← →
Digitman (2003-10-10 08:28) [3]кр.того, в составе MS Visual Studio есть GUI-утилита OLEView.exe - отличный помощник в просмотре и исследовании зарегистрированных в системе фабрик классов и библиотек типов
← →
Slym (2003-10-10 08:36) [4]TScriptControl
для него пишу редактор выражений... и соответственно нужен список процедур языка VBA... для работы со строками, датами и пр.
← →
Digitman (2003-10-10 08:52) [5]
> нужен список процедур языка VBA
хм...
ну, предположим, получил ты этот список ...
предположим, в списке имеется имя ф-ции "CStr", которую любой VBA-интерпретатор успешно распознает и исполняет
как ты намерен заставить VBA-интерпретатор исполнить эту ф-цию ?
← →
Slym (2003-10-10 09:05) [6]TScriptControl - MicrosoftScriptControl
он понимает VBA, JScript и пр.
res:=TScriptControl.Eval("CStr(12+6)");
res - "18"!
← →
Digitman (2003-10-10 09:51) [7]выполни импорт библиотеки типов в составе, например, файла VBA332.DLL... там то, что тебе нужно
← →
Slym (2003-10-10 10:15) [8]2 Digitman
А подробнее... Куском кода
Ну импортировал... А куда тыкаться?
← →
Slym (2003-10-10 10:30) [9]Тыкаюсь по интерфейсам- ничего не зарегистрированно.
а сама dll без DllRegisterServer
← →
Slym (2003-10-10 12:38) [10]2 Digitman
Так и напиши "Незнаю"...
← →
me (2003-10-10 12:58) [11]MSDN -> Platform SDK Documentation -> Tools and Scripting -> Scripting -> Windows Script Technologies -> VBScript (JScript)
← →
Digitman (2003-10-10 13:40) [12]
> Slym
я-то ,может, и "не знаю", но решить задачу мне не составит труда при необходимости, даже если "не знаю")
а вот ты, сударь, сидишь и ждешь готовенькое, всместо того чтобы рыться в док-ции и хэлпах. Лентяй !
гляди сюда , набросал тебе примерную логику, коль сам не всостоянии головой подумать)
дальше сам пляши от этой схемы
и книжку себе купи "Разработка COM-приложений в среде Delphi" Эрика Хармона.. взял я эту книжку и без особого труда за полчаса получил решение, хотя на практике ни разу не требовалось все это
//перечисление имен ф-ций
procedure TForm1.Button1Click(Sender: TObject);
var
itl: ITypeLib;
iti: ITypeInfo;
hr: hresult;
i, j: integer;
pta: PTypeAttr;
pfd: PFuncDesc;
AName, ADocStr: WideString;
AHelpContext: Integer;
begin
hr := LoadTypeLib(Widestring("C:\Program Files\Common Files\Microsoft Shared\VBA\vba332.dll"), itl);
olecheck(hr);
for i:= 0 to itl.GetTypeInfoCount - 1 do
begin
itl.GetTypeInfo(i, iti);
olecheck(iti.GetTypeAttr(pta));
try
case pta^.typekind of
TKIND_MODULE:
for j:= 0 to pta^.cfuncs - 1 do
begin
olecheck(iti.GetFuncDesc(j, pfd));
iti.GetDocumentation(pfd^.memid, @AName, @ADocStr, @AHelpContext, nil);
memo1.lines.add(aname);
end;
end;
finally
iti.ReleaseTypeAttr(pta);
end;
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c