|
|
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
Уважаемые модераторы аксесса! Низкий поклон Вам за вашу просветительскую и санитарную деятельность. Но у меня большая просьба перед тем, как отправить этот топик в Офис, пусть кто-нить ответит сюда, ибо нет на SQL более популярного, посещаемого знатоками всех и всяческих программистских наук, пакетов и тулзов, форума. Проблема, которую мне предстоит завтра решать (автоматически или вручную) такова. По постановке она похожа на т.н. слияние, но есть нижеследующие нюансы. Есть общий документ, в котором из некой табличной формы надо будет подставлять ФИО, должность, организация, "Уважаемый/ая " и т.п. Но, в отличие от MailMerge (который я, кстати тоже совсем почти не знаю), надо действовать по схеме: 1. Переход по записи табличной формы на нового адресата 2. Открытие исходного документа и подстановка в соответствующие Fields документа соответствующих значений 3. Спасение полученного нового Doc-файла с новым именем 4. Преобразование полученного файла в PDF путем печати на Acrobat Distiller 5. Loop Т.е. на каждого адресата должен быть создан новый Doc и PDF файл Внимание вопрос - какого типа Fields под такой обмен лучше всего организовать в исходном Word-документе? Мне желательно, чтобы в нем светилось, например, поле "Position", а в полученном файле на конкретного адресата я мог заменить его командой типа Код: plaintext ЗЫ Просто потерялся во всевозможных филдах Ворда и не могу найти подходящее без наворотов поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 15:42 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
1) похоже, слияние должно было бы тебя полностью устроить. Только рулить им пришлось бы со стороны ворда. Ну и ладно. Сделал бы в шаблоне документа процу, умеющую получить рекордсет - и вперед. 2) Если объявить запрет на слияние, то видится много дорог, аж глаза разбегаются. я бы, наверно, прошел нижеописанной дорогой (правда кода под рукой нет, поскольку еще не ходил - чистая мысль, и я ее думаю. патамушта у меня есть палец и место к которому его прислонить...), хотя еще мог бы "путей" накидать "Поля" формы документа я бы оформил как ПОЛЬЗОВАТЕЛЬСКИЕ СВОЙСТВА документа. (Файл-Свойства-Прочие) В самом документе проставил бы жесткие ссылки на эти свойства. (Вставка-Поле-поле DocProperty-любимое свойство из списка) В коде с этим пытался бы работать в стиле Dim tC As CustomProperty For Each tC In ActiveDocument.CustomDocumentProperties tC.Value="bla-bla-bla" Next ActiveDocument.Fields.Update ЗЫ - не знаю будет ли все это работать.... и то ли, чего ожидано было... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 16:17 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
Спасибо, Victosha, как раз одно из того, чего ожидалось, мне бы хоть за что-нибудь зацепиться. Все-таки это обилие наворотов и возможностей меня доканывает, особо когда в привычном месте на витрине не можешь найти своей привычной колбасы по 2р90к (это я про невозможность по имени обратиться к полю -ActiveDocument.Fields("Position")) Буду щас твой метод испытывать. О результатах доложу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 16:38 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
вот еще подумал - в "офисе" этому вопросу, наверно, луше жилось бы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 16:39 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
Я об это подумал заранее :) (см.1 абзац) Модеры - можете отправлять топик по адресу! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 16:51 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
Вот так прокатывает - изменение поля документа "в лоб", без всякого Property Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Спасибо еще раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 18:57 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
понял. мне сгодится. нет ли других признаков аллергии, кроме "неустойчивости" работы с CustomProperty? версия -то у ворда какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 20:12 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
Офис XP Word 2002 (10.4219.2625) На счет устойчивости работы ничего не могу сказать - получил результат и продолжил отдых (воскресенье ведь :).И спропетями не стал копаться по этой же причине. Раз там отдельно надо коллекцию и элемент коллекции описывать (Object not set) и еще гадать какое пропети - просто, или Custom, или CustomDocument... - плюнул и обратился в лоб. Получилось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 20:50 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
Пока писал уже всё решилось. Ну не пропадать же. Пусть будет запасным вариантом :) Если в исходный документ вставить именованные закладки, то задачу с созданием большого колличества вордовских документов можно решить так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 21:05 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
Вот только исходно закладка как метка выглядит, т.е. не имеет протяжения Вроде бы. ИМХО у меня не получилось в исходном тексте закладку сделать уже с неким текстом, т.е. как с Гиперлинком не получается работать, у которого есть Address и TextToDisplay. Или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 21:53 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
Если выделить какое-либо слово, пойти в меню Вставить>Закладки, там добавить новую закладку, нажать "Закрыть", то закладка будет с текстом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 22:20 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
закладки - хорошо. Пусть это называется вариант2. С ними - закладками- есть маленькая проблема, или особенность, если слово проблема не нравится. При вставке текста в закладку умолчательным способом - закладка исчезает из документа. Этот момент нужно специально обходить, если нужно сохранить закладку для дальнейшего использования. Если стоит задача - создать "плоский" документ и сохранить его - это не важно. Но. Вариант с пользовательскими реквизитами (ака свойствами), на мой взгляд, а) лучше соответствует задаче трансформации база - данных - документ, б) пригоден для организации циклических операций типа печати множества однотипных документов на открытом рекордсете, в) приходен к обратной трансформации документа в поля базы. Закладки тоже пригодны, при условии, что они сохранены в целевом документе. г) список закладок живет в теле документа, а список реквизитов - в заголовке. На этом основании есть вероятность, что с реквизитами (заполнением, присвоением значений) работа может вестись быстрее, д) при неоходимости внесения ручных изменений в реквизитах - естественным образом есть специальное место, где это должно происходить. Это уменьшает вероятность случайной порчи структуры документа при ручном ползании по закладкам. Запрограммировать ручное заполнение реквизитов через UserForm или форму Акцесс гораздо удобнее, на мой взглад, по сравнению с закладками. Удобство состоит в том, что список реквизитов сам по себе не имеет географической привязки к тексту документа. Повляется она только после добавления поля, ссылающегося на реквизит. Вот примерно такую мысль я думал, прислонив палец ко лбу, пока Лифчик трудился над кодом. Если же перечислять прочие варианты, то упомянуть можно о следующих а) отвергнутое слияние б) для документов типа возвратных анкет ( типа клиент заполняет и возвращает в организацию) - удачными могут оказаться внедряемые элементы управления. (Собственно для этого они и задумывались, но уж больно специальная область применения) в) Собственный механизм закладок, реализованный как специальные маркеры в тексте документа, далее а) с прямой реплейсом на вычитанном в строку документе, хранимом в формате ртф или хтмл, б) ОЛЕ-файд и реплейс. г) ... - кто продолжит дальше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2004, 22:54 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
Захотел навставлять CustomDocumentProperties програмно (чтобы потом проверить, что удобнее - закладки-то у меня уже есть): Help 2000CustomDocumentProperties Property Returns a DocumentProperties collection that represents all the custom document properties for the specified document. Read-only. больше ничего найти не смог, но делаю в аксессе так (при заполнения из рекордсета, одновременно заполняя закладки): Код: plaintext 1. ага, понял. работает точно так-же как Office.DocumentProperties (который у меня в аксессе отключен, да и все одно не поставлена справка). Кстати, как этот класс называется "абстрактный?", или еще как? и как пройти (как "точки расставить") от наследника к "предку" и его методам/св-вам? Чтобы синтаксис подсвечивался. Не понял (подключение ссылок на офис не выдало методов "предка"), поэтому видимо так и для кастомов: авторFunction Add(Name As String, LinkToContent As Boolean, [Type], [Value], [LinkSource]) As DocumentProperty ... придется перебрать все Type ? справка-то недоступна... текс, перебрал: (wrD.CustomDocumentProperties.Add "test" & i, False, i, i ) 1 - число 2 - буленовский 3 - дата 4 - текст 5 - число (интересно, чем отличается от 1) (все остальное не лезет) при связи (LinkToContent:=True) тип и значения перекрываются данными из закладки. удаляется из этого "ридонли" так: wrD.CustomDocumentProperties(sName).Delete (если документ не занят). ЗЫ : Интересно, Read-only. это в том смысле, что совем коллекцию дропнуть низзя, а членов в нее натыкать можно, или еще почему???? И почему тогда методы не подсвечиваются? Пока не придумал, чем пропертя лучче закладок (кроме того, что их нет в тексте, и юзер не должен смочь убить их руками) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2004, 16:34 |
|
||
|
Какой тип поля выбрать в Word-документе, чтобы легко было апдейтить из VBA?
|
|||
|---|---|---|---|
|
#18+
Лифчик какого типа Fields под такой обмен лучше всего организовать в исходном Word-документе? Мне желательно, чтобы в нем светилось, например, поле "Position", а в полученном файле на конкретного адресата я мог заменить его командой типа Код: plaintext ЗЫ Просто потерялся во всевозможных филдах Ворда и не могу найти подходящее без наворотов поле. на пятый год вопроса докопался я до семейства FormFIelds. т.е. вставлем обычные текстовые поля { FORMTEXT } или { FORMCHECKBOX }, к которым в защищенном режиме ходим через их закладки (примерно как у lobodava) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. кто бы навел на идею, как приходящий из рекордсета разрыв строки (VbNewLine) на вордовый конец строки ^l, или, на худой, конец абзаца ^p помянять в поле в защищенном режиме (режим правки полей)? (т.е. когда все эти методы Find и т.п. не работают). А то ж на стороне запроса придется заранее рубить на части, а на стороне шаблона ворда - делать кучу доп полей (подабзацев)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2009, 15:53 |
|
||
|
|

start [/forum/topic.php?fid=61&fpage=182&tid=2178952]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
105ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 414ms |

| 0 / 0 |
