Отчеты в заготовленные шаблоны из Vb6 в Word 2000?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Nataliak
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 10.03.2004 (Ср) 0:10

Отчеты в заготовленные шаблоны из Vb6 в Word 2000?

Сообщение Nataliak » 04.04.2004 (Вс) 20:04

Есть очень сложный по оформлению шаблон отчета в word'е. В нем есть некоторые поля, которые заполняются данными, полученными поиском по базе Lotus Notes/Domino. Как правильно заполнять поля в этом отчете?
Я сделала так:
1. Создала в шаблоне поля с уникальными именами.
2. далее заполняю его

Dim word_app As Word.Application
Dim word_doc As Word.Document
Dim word_field As Word.FIELD
Set word_app = New Word.Application
word_app.Visible = True
Set word_doc = word_app.DOCUMENTS.Open("c:\temlp.doc")
Set word_field = word_doc.Fields(2)
word_field.Result.Text = "здесь цифра для отчета"

Вопросы:
1. Можно ли задавать адресацию к полям по именам, а не word_doc.Fields(2)
2. Нужна цифра пишется, но отображается внутри серого поля. Можно ли заменять поле на текст, а то пользователь пугается - говорит хочу просто текст без серых полей.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 05.04.2004 (Пн) 8:30

1. Насколько я помню, да. Без разницы как указывать индекс поля - цифрой или же его именем.



2. Попробуй в ActiveWindow.View поставить FieldsShading в 0

Nataliak
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 10.03.2004 (Ср) 0:10

Если кому интересно что получилось...

Сообщение Nataliak » 09.04.2004 (Пт) 12:57

Идея не моя - научили, но это самый лучший вариант:
- смысл в том, чтобы после заполнения шаблона полей не оставалось совсем;
- адресация в этом примере всегда идет к первому полю;
- остается только не ошибится в порядке заполнения полей.

Sub InsertField(t As String)
Set word_field = word_doc.Fields(1)
word_field.Select
word_app.Selection.InsertAfter (t)
word_field.Select
word_app.Selection.Delete
End Sub

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.04.2004 (Пт) 13:05

Тогда тебе нужны не поля, тебе нужен шаблон, в который будут подставляться нужные значения.
Можно использовать такое поле: "MacroButton NoMacro [текст]". В макросе выделяешь нужное поле и заменяешь его (TypeText). Или другой вариант - нужные области помечаешь как закладки, тогда их будет легко найти и выделить. Например так:
Код: Выделить всё
objWordDoc.GoTo What:=wdGoToBookmark, Name:="Address"
objWordDoc.TypeText Text:="Test string"


Но мне кажется, что в вашем случае лучше использовать слияние, т.е. преобразовать ваш шаблон в документ слияния, подключить базу данных (это может быть другой документ Word или лист Excel) и вместо полей подставить поля базы данных.

Кстати, при использовании системы документооборота или корпоративной почты (Lotus, Outlook) можно в качестве базы данных использовать адресную книгу.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: SemrushBot и гости: 19

    TopList  
cron