powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Запустить макрос ЦWORD посредством DDE
5 сообщений из 5, страница 1 из 1
Запустить макрос ЦWORD посредством DDE
    #37112711
Фотография Елена Гох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
Подскажите, пожалуйста, какой командой в следующем коде ещё запустить нужный макрос:


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_style,'BUSY');
UTF.SHOWMES( 'Документ передается в MS Word (через DDE)', NO_ACKNOWLEDGE );
SYNCHRONIZE;
dir:=ReadFromRegistry('HKEY_LOCAL_MACHINE\SOFTWARE\microsoft\windows\currentversion\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||'",.ConfirmConversions=0]',1000);
-- Обновляем все поля
DDE.Execute(ConvId,'[EditSelectAll]',1000);
DDE.Execute(ConvId,'[UpdateFields]',1000);
DDE.Execute(ConvId,'[StartOfDocument]',1000);

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


exception when others then
null;
end;

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

Заранее благодарю за любую помощь.
...
Рейтинг: 0 / 0
Запустить макрос ЦWORD посредством DDE
    #37114601
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Елена Гох
Попробуйте так
DDE.Execute(ConvId,'[Run("xxx")]',1000);
...
Рейтинг: 0 / 0
Запустить макрос ЦWORD посредством DDE
    #37138548
Фотография Елена Гох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня тоже ткая мысль первой возникла, но правильный ответ такой:

DDEExecute chan, "[Toolsmacro.name=""Macro1"",.Run]" для запуска макроса без параметров.

Но всё равно от DDE пришлось отказаться из-за кодировки и невозможности поддерживать защиту от макросов в диалоге.
...
Рейтинг: 0 / 0
Запустить макрос ЦWORD посредством DDE
    #37139932
Jacobs Kaive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему не хочешь сделать это же через OLE ?
...
Рейтинг: 0 / 0
Запустить макрос ЦWORD посредством DDE
    #37140011
Фотография Елена Гох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начальник так хотел, удобнее для уже отлаженной программы.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Запустить макрос ЦWORD посредством DDE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]