Страница: 1 | 2 |
Вопрос: Использование шаблонов Word
Добавлено: 01.07.08 13:38
Автор вопроса: nat-z
Здесь мне уже Smith и Winand помогли по Winwordу.
А теперь тут же рядом еще задумка у меня появилась.
Мне надо выводить отчеты в ворд, в принципе можно создать шаблон. Как туда из VB вставлять значения? И как создавать вордовский файл по определенному шаблону и очень важно - чтобы пользователь не записал случайно вых.файл в имеющийся шаблон!!
Я понимаю, что становлюсь уже наверно неприятной как собеседник, но я не программист, просто бухгалтер-кассир. И даже учусь не на программиста! А очень хочется сделать, чтобы некоторым якобы программистам утереть!
Кто-то взялся бы проконсультировать меня через личку? Я очень толковая, быстро все пойму, только мне словами нельзя, мне нужно на каком-то элементарном примере!!
Ответы
Всего ответов: 27
Номер ответа: 1
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #1
Добавлено: 01.07.08 15:35
Nat-z, может не стоит с нашим братом погромистом тягаться? Если что и стоит делать, так только ради себя любимой.
Утереть нос может и получиться, но это уже не только твоя заслуга нечестно как-то. Задача несложная, сама смоглабы разобраться.
Если по любому нужен элементарный пример, то давай уже тут на форуме и обсудим. Может ещё кому пригодится.
Уточни куда именно ты эти значения вставить хочешь? В заготовленную таблицу? Или прямо между слов, в текст?
Номер ответа: 2
Автор ответа:
nat-z
Вопросов: 13
Ответов: 85
Профиль | | #2
Добавлено: 01.07.08 20:35
В заготовленную таблицу.
На сейчас имеется файл DOC, в котором я, допустим, вместо реальных значений (цифр и названий) могу проставить что-то типа VALUE001, VALUE002 и проч
В VB надо создать нов. доковский файл, аналогичный имеющемуся, только все эти VALUEXXX заменить на заранее просчитанные в программе значения.
Новый файл то ли будет сохраняться, то лм нет - выбор пользователя (но если сохранение - то в заранее определенной папке и заранее определенное имя).
Очень важно, чтобы пользователь по незнанию не записал результ.файл в исходный шаблон!!
А утирать надо, может хоть сами будут учиться писать, а то только винду переставляют да дискеты с умным видом форматируют!! )
Номер ответа: 3
Автор ответа:
nat-z
Вопросов: 13
Ответов: 85
Профиль | | #3
Добавлено: 01.07.08 20:43
В принципе все ясно из самой вых.формы.
Как образец одной из них - см
http://nat-z.nm.ru/VB/forma.rar
Номер ответа: 4
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #4
Добавлено: 02.07.08 10:23
Шаблоны *.dot Word открывает также как и документы. Твой отчёт можно сохранить в своей папке как шаблон dot и грузить его.
Dim WordObject As Object
'создаём объект
Set WordObject = CreateObject("Word.Application"
with WordObject
'грузим документ
.Documents.Open FileName:="C:\Мои документы\Шаблоны отчётов\Форма7.dot"
'вносим значения в поля таблиц
ActiveDocument.Tables(1).Cell(8, 2).Range.Text = "Smith"
ActiveDocument.Tables(2).Cell(8, 2).Range.Text = "Smith"
ActiveDocument.Tables(2).Cell(8, 6).Range.Text = "Smith"
ActiveDocument.Tables(2).Cell(8, 7).Range.Text = "Smi"
ActiveDocument.Tables(3).Cell(2, 4).Range.Text = "Smith"
ActiveDocument.Tables(3).Cell(2, 5).Range.Text = "Smith"
ActiveDocument.Tables(3).Cell(2, 6).Range.Text = "Smith"
ActiveDocument.Tables(3).Cell(2, 7).Range.Text = "Smith"
End With
Дальше видимо пригодиться пример Holsten-a
http://www.vbnet.ru/forum/show.aspx?id=168346
Перехватываем событие сохранения и сохраняем док в нужной нам папке с нужным именем.
Вот такое простое решение.
Номер ответа: 5
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #5
Добавлено: 02.07.08 10:25
Перед ActiveDocument должны быть точки.
Номер ответа: 6
Автор ответа:
nat-z
Вопросов: 13
Ответов: 85
Профиль | | #6
Добавлено: 03.07.08 11:38
Очень странно, но получилось!!
Правда, с некоторой непоняткой, но посмотрю еще.
Посмотрела пример бойца Холстена. Ничего не поняла или устала уже думать. Или попозже.
Теперь оргавнизационные вопросы.
У меня такой вызов для разных вых форм будет 15-20 (это первоначально). Каждый вызов – в какой-то экранной форме, где по введенному заказу мы с программой будем отбирать данные. Потом – везде стандартный фрагмент: открытие файла (возможно с какими-то проверками и обработкой ошибок), подстановка значений и закрытие файла.
Логично было бы фрагмент открытия с проверками (что-то типа:
' а это уже не для чтения файла, а для простановки значений.
Dim objWord As Object
Set objWord = CreateObject("Word.Application"
With objWord
.Documents.Open FileName:=NFile
.ActiveDocument.Tables(1).Cell(3, 1).Range.Text = GBmenu.Xorg
.ActiveDocument.Tables(1).Cell(5, 2).Range.Text = "Sm152"
- в *.bas. Но в этом случае при вызове как обращаться к
'With objWord
' .Documents.Open FileName:=NFile
' .ActiveDocument.Tables(1).Cell(4, 1).Range.Text = GBmenu.Xorg
И где и как мне располагать что-то типа
Private Sub app_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
.active.Document.FileName:= “xxxxxxx”
‘’’ Cancel = True
End Sub
для изменения имени файла при сохранении?
У меня вообще почему-то в *.bas что-то типа
'Private Sub app_DocumentBeforeSave(ByVal Doc…
Выдает ошибки!
И по замене. Мы же создаем пример, полезный для всех?
Возможно удобно будет поиск и замена какой-то последовательности символов.
Например, в шаблоне имеется текст XORG(50) – то ли в таблице, то ли где-то в любом месте Doc-файла, надо его найти и заменить на определенный в пользовательской программе текст, причем из текста вырезать фрагмент длиной 50 символов (то, что указано в скобках) начиная с XORG… и заменить на определенный в программе текст. Усложняем!
Номер ответа: 7
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #7
Добавлено: 03.07.08 12:26
Я сегодня весь день на одном полушарии, логически не думается совсем.
Тяжкие последствия недосыпания. Панелька 38” затягивает не по-детски.
Ничего не понял, заметил только, что мы упустили objWord.Visible = True.
Номер ответа: 8
Автор ответа:
s12
Вопросов: 24
Ответов: 363
Профиль | | #8
Добавлено: 03.07.08 13:31
Гммм... А можно еще вычисляемые поля использовать, имхо много удобней.
Dim d As Word.Document
Set w = CreateObject("word.Application"
Set d = w.Documents.Add("c:\tmp.dot"
w.Visible = True
d.Fields(1).Select
w.Selection.TypeText Text:="khjfghgfjm"
d.Fields(2).Select
w.Selection.TypeText Text:="OKey"
И ненадо по всему доку искать, а че бы нам тута поменять.
PS: используются поля типа "комментарии", но с другими типами тоже должно работать.
Номер ответа: 9
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #9
Добавлено: 03.07.08 13:35
Где-то может и удобнее использовать поля, но в том отчёте, что мне прислала Nat этим полям явно не место ...
Номер ответа: 10
Автор ответа:
nat-z
Вопросов: 13
Ответов: 85
Профиль | | #10
Добавлено: 03.07.08 18:55
Да, правильно.
Но во всех отчетах заведомо будут поля типа: название организации, код ОКПО, р/с и проч.
Причем они могут быть как в теле отчета (в таблице) так и в заголовке (вне таблицы) - отчетов много и очень разные. Поэтому нужна функция, которая заведомо при открытии файла всегда его весь пробегает и ищет 5-6 последовательностей символов, которые заменяет на стандартные. Причем некоторые последовательности могут быть и несколько раз!
38 - это температура? Мороженное не ешь, в попей молочка с медом. На выходные отдохни, а с понедельника надо резко начинать думать!!
Номер ответа: 11
Автор ответа:
nat-z
Вопросов: 13
Ответов: 85
Профиль | | #11
Добавлено: 03.07.08 23:26
А вот еще беда моя: тетеньки у меня уже вовсю научились ворд запускать и сразу по приходу на работу копий 5-6 запускают (чтобы шарики под ними прятать). Боюсь – потом путаться начнут. Чтобы не путались – поискала для ворда Icon – не нашла!! Можно как-то сменить иконту для ворда, запущенного не вручную, а из VB??
Сколько уже температура??
Спасибо Sl2 - я потом по этому аопросу обязательно достану!! Но мне нужен поиск по всему тексту до конца (на неоднократное вхождение)!
Номер ответа: 12
Автор ответа:
s12
Вопросов: 24
Ответов: 363
Профиль | | #12
Добавлено: 04.07.08 00:27
А так нельзя?
.Selection.WholeStory
s = .Selection.Text
в переменной весь текст документа, редактируй (replace'ы там всякие) как душе угодно.
Номер ответа: 13
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #13
Добавлено: 04.07.08 09:10
Нет, слава богу здоров пока.
Имел ввиду ЖК панель 38 дюймов.
Поиск с заменой есть в Ворде, а вот иконку не встречал.
Со вчерашними вопросами я так понял разобрались уже?
Номер ответа: 14
Автор ответа:
nat-z
Вопросов: 13
Ответов: 85
Профиль | | #14
Добавлено: 07.07.08 17:11
Теперь по сохранению документа под др именем. В том примере:
Неопред.тип Document.
Где его определить и как? И что значит “в проекте шаблона”??
И другое – как мне указать имя файла при сохранении (точнее – имя и путь к файлу по умолчанию) если я даже и вставлю обработку события сохранения изменений в файле:
Номер ответа: 15
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #15
Добавлено: 07.07.08 17:44
как я понимаю:
Set objDoc = New Document
'Set objDoc = CreateObject("Word.Document"