Текущее время: Чт, июл 31 2025, 18:05

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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