Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Запуск макроса WORD посредством DDE


Автор: Egoha 12.2.2011, 08:52
Доброго времени суток!
Подскажите, пожалуйста, какой командой в следующем коде ещё запустить нужный макрос:
Код
 
PROCEDURE OpenDocThroughDDE( DocName varchar2 ) IS
AppId pls_integer;
ConvID pls_integer;
msg varchar2(1000);
dir varchar2(1000);
i pls_integer;
BEGIN
set_application_property(cursor_sty le,'BUSY');
UTF.SHOWMES( 'Документ передается в MS Word (через DDE)', NO_ACKNOWLEDGE );
SYNCHRONIZE;
dir:=ReadFromRegistry('HKEY_LOCAL_M ACHINE\SOFTWARE\microsoft\windows\c urrentversion\app paths\winword.exe\Path');
msg:='Не удается загрузить MS Word. Обратитесь к администратору системы.';
IF is_window_exists('Microsoft Word')=0 THEN
AppID := DDE.App_Begin( dir||'\winword.exe /n',DDE.App_Mode_Normal);
m_pause(5);
END IF;
msg:='Ошибка DDE.'||chr(10)||
'Перейдите в Word (Alt-Tab) и попробуйте открыть файл '||DocName;
ConvID := DDE.Initiate('WinWord', 'System');
m_pause(3);
msg:='Не удается открыть файл '||DocName||'.'||chr(10)||
'Перейдите в Word (Alt-Tab) и попробуйте открыть файл '||DocName;
begin
DDE.Execute(ConvId,'[FileOpen .name="'||DocName||'",.ConfirmConve rsions=0]',1000);
-- Обновляем все поля
DDE.Execute(ConvId,'[EditSelectAll]',1000);
DDE.Execute(ConvId,'[UpdateFields]',1000);
DDE.Execute(ConvId,'[StartOfDocument]',1000);

??????????????????????????????????? ???????


exception when others then
null;
end;
 
Отговаривать, что это старо, не надо, у меня задача заставить работать именно этот кусок - пристроить к нему вымученный макрос, последний я не могу вживить в шаблон документа, т.к. используется формат RTF. Таковы условия задачи, не мне их менять.

Заранее благодарю за любую помощь. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)