Текущее время: Вс, июл 20 2025, 22:56

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Динамическое создание макроса в Word
СообщениеДобавлено: Пт, фев 11 2011, 11:46 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
Добрый день.
Проблема следующая: не получается динамически создать макрос в документе Word.
Например, так:
Code:
REPORT  ZTEST4 MESSAGE-ID sy.

INCLUDE ole2incl.

DATA: gs_word         TYPE ole2_object ,
      gs_documents    TYPE ole2_object ,
      gs_newdoc       TYPE ole2_object ,
      gs_selection    TYPE ole2_object ,
      gs_application  TYPE ole2_object ,
      gs_actdoc       TYPE ole2_object ,
      gs_font         TYPE ole2_object .

DATA: field_value(30) TYPE c.

CREATE OBJECT gs_word 'WORD.APPLICATION' .
IF sy-subrc NE 0 .
  MESSAGE s000(su) WITH 'Error while creating OLE object!'.
  LEAVE PROGRAM .
ENDIF .

data lt_x type string_table.
data lwa_x like line of lt_x.

lwa_x = 'test'.
append lwa_x to lt_x.

SET PROPERTY OF gs_word 'Visible' = '1' .
CALL METHOD OF gs_word 'Documents' = gs_documents.
CALL METHOD OF gs_documents 'Add' = gs_newdoc
exporting #1 = 'c:\sap.dot'
  #2 = 0
  #3 = 0
  #4 = 1 .

*CALL METHOD OF gs_newdoc 'Activate' = gs_actdoc.

data: begin of itab occurs 0,
  str(255) type c,
end of itab.
itab-str = 'Selection.TypeText Text:="PRIVET"'. append itab.
itab-str = 'Selection.TypeParagraph'. append itab.



CALL METHOD OF gs_word 'Run'
exporting #1 = 'macros_sap'
  #2 = itab.

"sy-subrc is always 2
IF sy-subrc NE 0 .
  MESSAGE s000(su) WITH 'Error while calling macro!'.
  LEAVE PROGRAM .
ENDIF .


Здесь смысл в том, что есть шаблон sap.dot в котором есть пустой макрос:
Sub macros_sap(ParameterArray() As String)

End Sub
И формируется таблица с телом макроса, но не срабатывает.
Идея в том, чтобы создать макрос который формируется динамически в программе и запустить его в документе Word.
Может кто подскажет, что не так.
В Excel такое возможно и работает, а в Word-е не получилось.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическое создание макроса в Word
СообщениеДобавлено: Пн, фев 14 2011, 12:38 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
hub2002 написал(а):
Может кто подскажет, что не так.

Симптомы-то какие?

Обычно для такого необходимо на уровне Word'а/Excel'я разрешить доступ к проектам VBA.
Посмотри, как ALV это делает. Там суть такая же.

_________________
/nex


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамическое создание макроса в Word
СообщениеДобавлено: Пн, фев 14 2011, 12:49 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
hub2002 написал(а):
В Excel такое возможно и работает, а в Word-е не получилось.

В MS Office 2010 для того, чтобы в Word запустились макросы, в настройках безопасности пришлось включить опцию "Включить все макросы".
Пункт "Доверять доступ к объектной модели проектов VBA", который работал в Office 2007, для Office 2010 не сработал...
В Excel галочка "Доверять доступ к объектной модели проектов VBA" позволяет запускать макросы без проблем.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамическое создание макроса в Word
СообщениеДобавлено: Пн, фев 14 2011, 13:08 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
Дело не в безопасности, проблема в том, что объекты в Excel и Word отличаются.
И не получилось перевести из Excel в Word корректно.
И Word несколько по другому с макросами работает.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическое создание макроса в Word
СообщениеДобавлено: Пн, фев 14 2011, 15:41 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 07:26
Сообщения: 80
Откуда: Альфа Центавра
Пол: Мужской
Да вроде DOM у Excel и Word одниковый
просто в Word надо через ActiveDocument.VBProject
а в Excel через ActiveWorkbook.VBProject

в Tools->Refrences надо поставить
c:\Program Files\Common Files\Microsoft Shared\vba\vba6\VBE6EXT.OLB
и редактор будет помогать если что


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB