Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.23;
Скачать: CL | DM;

Вниз

Как и откуда вытащить все имена процедур, функций и констант 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.009 c
1-74281
Движняк
2003-10-12 01:10
2003.10.23
Прозрачная форма


8-74332
Ilg
2003-06-21 17:08
2003.10.23
Текстурная заливка


4-74534
Maxim Pshevlotsky
2003-08-16 18:45
2003.10.23
Как вызвать окно


1-74227
ТупойКакЧайник
2003-10-09 15:56
2003.10.23
Написание символов...


1-74279
Roksolan
2003-10-13 09:19
2003.10.23
Install Shield Express





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский