Author |
Topic |
|
Lena
11 Posts |
Posted - 12/20/2004 : 18:37:17
|
Привет всем! Подскажите, пожалуйста, как сделать следующее: имеется документ word, по объектам в visio делается отчет в этот документ, как сделать так, чтобы текст из visio вставлялся в указанное место в word? Как указать это место? |
|
Tumanov
Russia
1198 Posts |
Posted - 12/20/2004 : 19:40:03
|
Скорее всего это можно сделать разными методами. Все зависит от того, что Вам нужно. Варианты: 1. Вы вставляете данные в какое-то место, которое можно заранее обозначить закладкой, и дальше все данные идут сплошняком. 2. В документе Word есть готовая таблица и нужно только вставить данные в ее ячейки. 3. В документе Word есть таблица с шапкой, нужно пририсовывать строки и вставлять в них данные. 4. Есть набор полей, которые нужно заполнить. 5. Есть слово, комбинация слов, стиль, которые нужно найти и вместо них или после них вставить данные. Да и других вариантов наверное полно. Можно пересчитывать параграфы, отсчитывать нужную страницу, отмерять сантиметры на странице... Так что Вы скажите, как Вы хотите (или можете) указать это место, а потом мы подумаем, как это реализовать :) Ну, или хотя бы просто расскажите подробнее, на что похож Ваш документ в Word и сколько и каких данных Вы хотите в него вставить. |
|
|
Lena
11 Posts |
Posted - 12/21/2004 : 12:17:28
|
Добрый день! Проблема в следующем, у меня есть шаблон должностной инструкции, а рисунок в visio представляет собой бизнес-процесс, моя программа осуществляет анализ бизнес-процесса, и данные анализа вставляет в word, это функции должностного лица, документы, которые указанное должностное лицо передает дальше и регламенты, которыми он руководствуется в своей деятельности, мне необходимо, чтобы автоматически в шаблон в указанное место вставлялось название должности и все перечисленное выше. Пример: Должностная инструкция руковордителя отдела (это взято из visio) Т. е. из приведенных вами примеров мне подходит варианты 4 и 5 (хотя больше наверное 4). Проблема в том что я не знаю написания макросов в word, и word у меня стоит русский, что усложняет работу по его разбору в виду того что visio то у меня английское. Буду благодарна за помощь, и подскажите пожалуйста, если можете хороший сайт по работе с макросами в word. |
|
|
Tumanov
Russia
1198 Posts |
Posted - 12/21/2004 : 19:43:36
|
Можно начать с варианта, почти не требующего написания макросов в Word. Делаете шаблон Word, вставляете в нужное место специальные поля, а в Visio пишете макрос, который будет создавать документы Word по заданному шаблону и вставлять в эти поля данные.
В качестве полей можно использовать переменные документа. Придумайте им название, например, v1, v2 и v3. Эти переменные надо сначала вставить в шаблон, а потом в документ вставить поля для вывода их значений. Готовите шаблон, в который будете вставлять данные. Пишете в нем макрос, создающий переменные документа. Для этого открываете редактор Visual Basic Сервис / Макрос / редактор Visual Basic Щелкаете слева по ThisDocument. В большом окне справа будет надпись Option Explicit и больше ничего. Вместо этой надписи набираете примерно такой текст
Sub SetVariable() Application.ActiveDocument.Variables.Add ("v1") Application.ActiveDocument.Variables.Add ("v2") Application.ActiveDocument.Variables.Add ("v3") End Sub
и нажимаете F5, чтобы его выполнить. Макрос создаст в шаблоне три переменных. Больше он не понадобится, разве что изменить что-нибудь нужно будет...
Теперь надо вставить поля в текст документа. Закрываем редактор Visual Basic и забываем про него. В документе ставим маркер на нужное место. Выполняем Вставка / Поле / Автоматизация документа / DocVariable и там, где высветилось DOCVARIABLE, добавляем имя переменной. Будет, например, DOCVARIABLE v1 Жмем OK Таким же образом вставляем в остальные места поля с другими переменными. Сохраняем то, что получилось, как шаблон Word и закрываем Word.
----------------- Теперь занимаемся с Visio Я так понимаю, что из шейпов нужные данные Вы достать сможете. Трудности в том, как записать их в переменные Word.
Пишем примерно такой макрос в Visio (добавляем к Вашей программе):
Dim appWD As Word.Application Err.Number = 0 On Error GoTo krash Set appWD = CreateObject("Word.Application.9") appWD.Visible = True
'здесь нужно будет достать из шейпа нужные данные, в примере их три штуки s1, s2 и s3
With appWD Set myDoc = .Documents.Add("forVisio.dot") appWD.ActiveDocument.Variables(1) = s1 appWD.ActiveDocument.Variables(2) = s2 appWD.ActiveDocument.Variables(2) = s3 .Selection.WholeStory .Selection.Fields.Update .Selection.WholeStory myDoc.SaveAs Filename:="Какое-нибудь имя файла" myDoc.Close Set myDoc = Nothing End With
krash: If Err.Number <> 0 Then MsgBox "Не открывается Word" Exit Sub End If appWD.Quit Set appWD = Nothing
Комментарии: CreateObject("Word.Application.9") запустит Word. Чтобы это сработало, в проекте Visio должна быть подключена библиотека Microsoft Word 9... (или какая там у Вас, выберите в списке References). Блок With ... End With создает документ Word по шаблону forVisio.dot (или как там Вы назвали подготовленный шаблон), записывает в этот документ значения трех переменных, сохраняет его под каким-то именем и закрывает документ. Ниже только обработка ошибки, если Word не откроется.
Вообще-то, это написано много, а на самом деле все несложно. Пробуйте... |
|
|
|
Topic |
|
|
|