All Forums
 Категория Visio
 Форум Вопросы и ответы
 Вставка в word???
Author Previous Topic Topic Next 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 и сколько и каких данных Вы хотите в него вставить.
Go to Top of Page

Lena

11 Posts

Posted - 12/21/2004 :  12:17:28
Добрый день! Проблема в следующем, у меня есть шаблон должностной инструкции, а рисунок в visio представляет собой бизнес-процесс, моя программа осуществляет анализ бизнес-процесса, и данные анализа вставляет в word, это функции должностного лица, документы, которые указанное должностное лицо передает дальше и регламенты, которыми он руководствуется в своей деятельности, мне необходимо, чтобы автоматически в шаблон в указанное место вставлялось название должности и все перечисленное выше.
Пример:
Должностная инструкция
руковордителя отдела (это взято из visio)
Т. е. из приведенных вами примеров мне подходит варианты 4 и 5 (хотя больше наверное 4). Проблема в том что я не знаю написания макросов в word, и word у меня стоит русский, что усложняет работу по его разбору в виду того что visio то у меня английское. Буду благодарна за помощь, и подскажите пожалуйста, если можете хороший сайт по работе с макросами в word.
Go to Top of Page

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 не откроется.

Вообще-то, это написано много, а на самом деле все несложно. Пробуйте...
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)