Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

ru:creating_user_reports:use_macros_in_reports:work_in_macros [2014/04/21 12:27]
admin [Примеры решения задач с использованием макросов]
ru:creating_user_reports:use_macros_in_reports:work_in_macros [2017/10/16 15:07] (текущий)
Строка 9: Строка 9:
   *выбрать закладку "Параметры макросов", в разделе "Параметры макросов для разработчика" установить опцию "Доверять доступ к объектной модели проектов VBA".   *выбрать закладку "Параметры макросов", в разделе "Параметры макросов для разработчика" установить опцию "Доверять доступ к объектной модели проектов VBA".
  
-В Microsoft Word 2010:+В Microsoft Word 2010/2013/2016:
  
   *выбрать пункт меню "Файл -> Параметры…";   *выбрать пункт меню "Файл -> Параметры…";
Строка 85: Строка 85:
 Любой отчет изначально содержит следующий макрос: Любой отчет изначально содержит следующий макрос:
  
-<code vb>+<code>
  
 Sub ПослеВыполненияОтчета(ob As Variant, app As Variant) Sub ПослеВыполненияОтчета(ob As Variant, app As Variant)
Строка 121: Строка 121:
 В отчете такие привязки представлены полями. В отчете такие привязки представлены полями.
  
-Узнать название в шаблоне отчета: см. [[ru/manual/report/insert_anchor]], статья [[ru/manual/report/insert_anchor?&#пример_определения_названия_привязки_типа_объект | Пример определения названия привязки типа "Объект"]].+Узнать название в шаблоне отчета: см. статью [[ru/manual/manual]] -> [[ru/manual/report/insert_anchor?&#пример_определения_названия_привязки_типа_объект|Пример определения названия привязки типа "Объект"]].
  
 Использование названия привязки в коде: Использование названия привязки в коде:
  
-<code vb>+<code>
    
 ПеременнаяВКоде = Application.ActiveDocument.Variables.Item("НазваниеПривязки").Value ПеременнаяВКоде = Application.ActiveDocument.Variables.Item("НазваниеПривязки").Value
Строка 135: Строка 135:
 В отчете такие привязки представлены таблицей. В отчете такие привязки представлены таблицей.
  
-Узнать название в шаблоне отчета: см. [[ru/manual/report/insert_anchor]], статья [[ru/manual/report/insert_anchor?&#пример_определения_названия_привязки_типа_список |Пример определения названия привязки типа "Список"]].+Узнать название в шаблоне отчета: см. статью [[ru/manual/manual]] -> [[ru/manual/report/insert_anchor?&#пример_определения_названия_привязки_типа_список|Пример определения названия привязки типа "Список"]].
  
 Использование названия привязки в коде: Использование названия привязки в коде:
  
-<code vb>+<code>
      
 Set ТаблицДляОбработки = Application.ActiveDocument.Bookmarks("НазваниеПривязки").Range.Tables(1) Set ТаблицДляОбработки = Application.ActiveDocument.Bookmarks("НазваниеПривязки").Range.Tables(1)
Строка 154: Строка 154:
 **Работа с таблицей через название привязки** **Работа с таблицей через название привязки**
  
-<code vb>+<code>
  'переменная для работы с конкретной таблицей  'переменная для работы с конкретной таблицей
 Set Table = Application.ActiveDocument.Bookmarks("НазваниеПривязки").Range.Tables(1) Set Table = Application.ActiveDocument.Bookmarks("НазваниеПривязки").Range.Tables(1)
Строка 168: Строка 168:
 **Работа с таблицей через её номер в документе** **Работа с таблицей через её номер в документе**
  
-<code vb>+<code>
  
 сountTables = ActiveDocument.Tables.Count 'количество таблиц в документе сountTables = ActiveDocument.Tables.Count 'количество таблиц в документе
Строка 186: Строка 186:
   * Таблицы могут содержать объединенные ячейки. В случае перебора всех строк таблицы может возникнуть ошибка. Чтобы этого не было,  необходимо использовать команду игнорирования ошибки:   * Таблицы могут содержать объединенные ячейки. В случае перебора всех строк таблицы может возникнуть ошибка. Чтобы этого не было,  необходимо использовать команду игнорирования ошибки:
  
-<code vb>+<code>
 On Error Resume Next ' игнорирование <error 5991> - ячейки таблицы имеют вертикальное объединение On Error Resume Next ' игнорирование <error 5991> - ячейки таблицы имеют вертикальное объединение
    
Строка 193: Строка 193:
   * При получении текста таблицы следует помнить, что полученное значение ячейки так же содержит в себе 2 служебных символа. Для обработки данных ячейки без этих служебных символов следует произвести «очистку» значения. Например:   * При получении текста таблицы следует помнить, что полученное значение ячейки так же содержит в себе 2 служебных символа. Для обработки данных ячейки без этих служебных символов следует произвести «очистку» значения. Например:
  
-<code vb>+<code>
  
 СellText = Selection.Tables(1).Cell(3,2).Range.Text 'текст ячейки со служебными символами СellText = Selection.Tables(1).Cell(3,2).Range.Text 'текст ячейки со служебными символами
Строка 224: Строка 224:
    
 Пример использования в коде: Пример использования в коде:
-<code vb>+<code>
  
 Dim HTMLCreate As Boolean Dim HTMLCreate As Boolean
Строка 252: Строка 252:
  
 <codevb> <codevb>
-  
 ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes 'Alt+F9 - видим не коды полей, а значения ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes 'Alt+F9 - видим не коды полей, а значения
-  
 </code> </code>
  
Строка 271: Строка 269:
 **Пример проверки наличия привязки типа "Список".** В документе это закладки. **Пример проверки наличия привязки типа "Список".** В документе это закладки.
  
-Определяем название привязки типа "Список", которая представляет нужную таблицу(см. [[ru/manual/report/insert_anchor?&#пример_определения_названия_привязки_типа_список ]])+Определяем название привязки типа "Список", которая представляет нужную таблицу (см. [[ru/manual/manual]] -> [[ru/manual/report/insert_anchor?&#пример_определения_названия_привязки_типа_список|Пример определения названия привязки типа "Список"]]).
  
-<code vb>+<code>
  
 BookmarkName = "Изменения_процесса_e1ded8b0" 'название привязки BookmarkName = "Изменения_процесса_e1ded8b0" 'название привязки
Строка 306: Строка 304:
 **Пример проверки наличия привязки типа Объект** **Пример проверки наличия привязки типа Объект**
  
-Определяем название привязки типа "Объект", которая представляет нужное поле в отчёте(см. [[ru/manual/report/insert_anchor?&#пример_определения_названия_привязки_типа_объект]])+Определяем название привязки типа "Объект", которая представляет нужное поле в отчёте (см. статью [[ru/manual/manual]] -> [[ru/manual/report/insert_anchor?&#пример_определения_названия_привязки_типа_объект|Пример определения названия привязки типа "Объект"]]).
  
-<code vb>+<code>
  
 VarName = "Статус_процесса_c9a10e8d" 'название привязки VarName = "Статус_процесса_c9a10e8d" 'название привязки
Строка 336: Строка 334:
 </code> </code>
  
- == Примечание ==+== Примечание ==
 Закладки, не относящиеся к привязкам, например, созданные пользователем самостоятельно, при копировании отчетов не изменяются. Закладки, не относящиеся к привязкам, например, созданные пользователем самостоятельно, при копировании отчетов не изменяются.
-====== ======+==== ====
  
 ===== Обращение к данным из базы ===== ===== Обращение к данным из базы =====
Строка 357: Строка 355:
   * "ob" - объект, от которого был вызван отчет;   * "ob" - объект, от которого был вызван отчет;
  
-  * <СистемноеНазваниеПараметра> − это системное название параметра объекта, которое можно просмотреть в Объектной модели (см. [[ru/manual/report/object_model]]).+  * <СистемноеНазваниеПараметра> − это системное название параметра объекта, которое можно просмотреть в **Объектной модели** (см. [[ru/manual/manual]] -> [[ru/manual/report/object_model]]).
  
 Например, при выводе отчета от процесса получить данные названия процесса можно таким образом: Например, при выводе отчета от процесса получить данные названия процесса можно таким образом:
  
-<code vb>+<code>
  
    Name = ob.Название  'получаем Название объекта, от которого вызвали отчет     Name = ob.Название  'получаем Название объекта, от которого вызвали отчет 
Строка 370: Строка 368:
 Механизм OLE предоставляет более широкие возможности по обращению к данным бизнес-модели и выводу этих данных в отчетах по сравнению с обращением просто как данным объекта, от которого был вызван отчет. Механизм OLE предоставляет более широкие возможности по обращению к данным бизнес-модели и выводу этих данных в отчетах по сравнению с обращением просто как данным объекта, от которого был вызван отчет.
  
-Описание механизма OLE подробно описано в главе [[ru/technical_manual/work_via_ole]]. +Описание механизма OLE подробно описано в главе [[ru/technical_manual/technical_manual]] -> [[ru/technical_manual/work_via_ole]]. 
 Для задействования OLE в отчетах конкретной базы нет необходимости во включении опции "Разрешено использование OLE".  Для задействования OLE в отчетах конкретной базы нет необходимости во включении опции "Разрешено использование OLE". 
  
-==Внимание! == +== Внимание! == 
 В отчетах при работе с OLE недоступны все методы класса "Система.OleApplication", поскольку в макросе "ПослеВыполненияОтчета" есть аргумент "app", который является приложением Business Studio, а не "Система.OleApplication". В отчетах при работе с OLE недоступны все методы класса "Система.OleApplication", поскольку в макросе "ПослеВыполненияОтчета" есть аргумент "app", который является приложением Business Studio, а не "Система.OleApplication".
-===== =====+==== ====
  
 ===== Несколько задач в одном макросе ===== ===== Несколько задач в одном макросе =====
Строка 385: Строка 383:
  
 В таких случаях каждую решаемую задачу удобно оформлять отдельным макросом. А в ключевом макросе "ПослеВыполненияОтчета" лишь вызывать по очереди нужные макросы. Все эти макросы оформляются в том же окне, где и ключевой макрос и делается так: В таких случаях каждую решаемую задачу удобно оформлять отдельным макросом. А в ключевом макросе "ПослеВыполненияОтчета" лишь вызывать по очереди нужные макросы. Все эти макросы оформляются в том же окне, где и ключевой макрос и делается так:
-<code vb>+<code>
 Sub ПослеВыполненияОтчета(ob As Variant, app As Variant) Sub ПослеВыполненияОтчета(ob As Variant, app As Variant)
  
Строка 407: Строка 405:
 Если такие макросы имеют одинаковые части кода, то их тоже можно (и рекомендуется) выносить в отдельные макросы или функции в том же окне с ключевым макросом. Например, функция для определения присутствия в отчете необходимой привязки типа "Список" (см. [[#работа_с_копией_отчета_содержащим_макрос|Работа с копией отчета, содержащим макрос]]) может быть следующей: Если такие макросы имеют одинаковые части кода, то их тоже можно (и рекомендуется) выносить в отдельные макросы или функции в том же окне с ключевым макросом. Например, функция для определения присутствия в отчете необходимой привязки типа "Список" (см. [[#работа_с_копией_отчета_содержащим_макрос|Работа с копией отчета, содержащим макрос]]) может быть следующей:
  
-<code vb>+<code>
 Function BookmarkIs(BookmarkName As String) As Boolean Function BookmarkIs(BookmarkName As String) As Boolean
  
Строка 431: Строка 429:
  
 Использование этой функции из макроса может быть таким: Использование этой функции из макроса может быть таким:
-<code vb>+<code>
 Sub MacrosN () Sub MacrosN ()
  
Строка 444: Строка 442:
  
 ===== Отладка кода ===== ===== Отладка кода =====
-Разработка макроса, как и любая другая работа, это определенный путь, в котором будут допущены ошибки и будет их исправление. Ошибки могут быть обнаружены сразу или не видны при первом взгляде. Более детально об этом см. [[/ru/creating_user_reports/use_macros_in_reports/debug]].+Разработка макроса, как и любая другая работа, это определенный путь, в котором будут допущены ошибки и будет их исправление. Ошибки могут быть обнаружены сразу или не видны при первом взгляде. Более детально об этом описано в главе [[/ru/creating_user_reports/use_macros_in_reports/debug]].
  
 ===== Примеры решения задач с использованием макросов ===== ===== Примеры решения задач с использованием макросов =====
 +
 Примеры работы с отчетами при использовании макросов приведены в статье [[/ru/creating_user_reports/use_macros_in_reports/examples]]. Примеры работы с отчетами при использовании макросов приведены в статье [[/ru/creating_user_reports/use_macros_in_reports/examples]].
  
Строка 455: Строка 454:
   *[[http://msdn.microsoft.com/ru-ru/library/office/ee814737(v=office.14).aspx|http://msdn.microsoft.com]] - Начало работы с VBA в Excel 2010   *[[http://msdn.microsoft.com/ru-ru/library/office/ee814737(v=office.14).aspx|http://msdn.microsoft.com]] - Начало работы с VBA в Excel 2010
   * [[https://www.google.ru/?q=vba#q=vba|http://google.com]]   * [[https://www.google.ru/?q=vba#q=vba|http://google.com]]
-  * + 
 + 
 + 
 + 
 [<contextnavigator>] [<contextnavigator>]
  
Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki