|
|
|
Нужна помощь. Макрос для сохранения слияния.
|
|||
|---|---|---|---|
|
#18+
Привет всем! MS office 2010. Делаю слияние для автоматизации создания документов (договор, смета, акт, накладная), куда подставляются данные из excel. Т.е. сейчас есть 4 файла ворд, связанные с бд в экселе, куда вносятся все данные по заказчику. Слияние работает как надо, но хочу сделать макрос который будет сохранять результирующие файлы в нужном месте с нужными названиями. Сейчас добился того, чтобы макрос сохранял текущую запись слияния (так и задумано) по адресу C:\test\002-14\Договор_002-14.doc где C:\test - каталог где лежит шаблон договора, подключённый к бд в экселе 002-14 - номер договора, читается для текущей записи слияния из экселя (поле "contract") т.е. макрос создаёт папку куда будет помещать все документы по данному договору.: C:\test\002-12\ДОГОВОР_002-12.doc C:\test\002-12\СМЕТА_002-12.doc C:\test\002-12\НАКЛАДНАЯ_002-12.doc C:\test\002-12\АКТ_002-12.doc Повторюсь, мне нужно сохранять только одну текущую запись слияния за запуск макроса. Что хотелось бы улучшить (в порядке значимости): 1. Чтобы макрос был общий для всех документов. Сейчас текст "Договор_" просто прописаны в коде. Тут я думаю можно заменить эту часть на закладку, которая будет для всех файлов одинаково называться, но ссылаться на нужный текст. Как это прописать в коде - не знаю. 2. Чтоб документ шаблон был 1, а не 4 как сейчас. Т.е. все содержалось бы в 1м вордовском файле, разделённом скажем разрывами разделов, но сохранялось бы в 4 разные результирующие файла. Чтоб не запускать 4 шаблона и не нажимать 4 раза "да" для подключения к источнику данных. Тогда закладки, предложенные мной в п.1. не проканают, т.к. файл у нас 1 и одну и туже закладку в два места не воткнёшь. Наткнулся на эту тему , где "постранично режут" документ на разные файлы, но немного не мой случай, однако вселяет надежду, что это возможно. привожу свой текущий код: Код: vbnet 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. и ещё второстепенные пожелания... 3. Поколдовать с экселевским файлом, чтоб из него запускался файл шаблона с активной последней записью слияния. 4. Поколдовать с экселевским файлом, чтоб создать форму для заполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2012, 23:52 |
|
||
|
Нужна помощь. Макрос для сохранения слияния.
|
|||
|---|---|---|---|
|
#18+
Зачем сохранять готовые документы в виде файлов? Да еще и по всем договорам, контрагентам... Если вы и отслеживаете изменения - так делайте отдельные записи в базе, с изменениями... а сформировать любой из документов из базы вы можете в любой момент на основе ссылки на имеющийся файл-шаблон (шаблонов/образцов, в любом случае, будет намного меньше, чем договоров - вы же не делаете отдельную форму для каждого договора?) И "разбивать" внутри вордовского файла ничего не надо - просто формируйте соответствующий документ (накладную, смету...) Пример - 9630015 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 00:28 |
|
||
|
Нужна помощь. Макрос для сохранения слияния.
|
|||
|---|---|---|---|
|
#18+
AndreTM, интересный пример, спасибо. увы, в моём случае сохранение всех файлов по всем договорам неизбежно т.к. 1) файлы Накладная и Смета в любом случае требуют ручного редактирования 2) так уж заведено в компании, что документация по каждому заказу должна быть в папке этого проекта (заказа) с прочими файлами и доступ по локальной сети возможен только к этим результирующим документам. Шаблоны документов для слияния и источник документов доступен только зам. дир-ра. Заказчики у нас не повторяются и для каждого заказа мы в любом случае создаём папку проекта с рабочими файлами. Слияние делается не для того, чтобы было бд со всеми данными, а чтобы 4 раза не вбивать\копипастить данные по заказчику, дату и номер договора во все документы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 01:13 |
|
||
|
Нужна помощь. Макрос для сохранения слияния.
|
|||
|---|---|---|---|
|
#18+
Так разговор об этом и идёт, вообще-то... Сами программные средства делаются "как принято" - то есть таблицы, база, шаблоны... А нагенерить документы можно в любой момент - и они смогут лежать там, где надо... Вполоть до кнопочки "сгенерировать все документы". Вы просто поймите - то, что "Накладная" и "Смета" требуют "ручного редактирования" - так это же не редактирования формы документа , а именно данных в базе . Вот эти данные и редактируйте. И решайте вопрос, как юзеры смогут редактировать ОДНИ И ТЕ ЖЕ ДАННЫЕ, на основе которых и будут строиться выходные формы. А раз документация должна храниться по проектам - так хранИте, кто вам запрещает? Иногда жмакайте БОЛЬШУЮ КНОПКУ "сгенерить выходные документы" - и усё Или вы не можете построить информсистему сами, а "начальство" не способно понимать, что живёт уже не во времена DOS? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 01:41 |
|
||
|
Нужна помощь. Макрос для сохранения слияния.
|
|||
|---|---|---|---|
|
#18+
AndreTM, проще всего наверно было бы ответить на последнее "или" да. но попробую немного иначе)) у меня не стоит задачи создать бд, которая бы стала панацеей. Мне нужно только , чтобы не приходилось заносить одни и те же данные несколько раз к ряду. Для этого слияния более чем достаточно. Макрос нужен, чтоб не париться с ручным вводом имён документов и путей сохранения. Т.е. мне нужен конкретный (далеко не универсальный, местами ограниченный и, возможно, даже ущербный) инструмент для решения конкретной задачи. Что касается ручного редактирования Сметы и Накладной, то речь идёт о редактировании (заполнении) данных, не относящихся к источнику данных (файлу экселя, бд - звучит слишком громко). Т.е. будут редактироваться уже "слитые" (merged звучит лучше) файлы. Я тоже сейчас могу капсом написать, что ПРЕКРАСНО вас понимаю, и согласен с вашим подходом, но я не в той ситуации чтобы навязывать информационную политику)) мог бы сейчас подробно описать сейчас процедуры бизнес-процесса по документообороту с заказчиками (собственно я скорее процессник, и вовсе не ITшник), но это будет жутким оффтопом. Просто мне не хочется останавливаться на достигнутом, и довести до ума то, что есть - и этого будет более чем достаточно. Если вдруг наступит тот светлый день, когда начальство захочет потратить немного денег на разработку корпоративной ИС, то этим буду заниматься не я =)) Ещё раз повторюсь, что концептуально я с вами согласен, но, увы, не мой случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 02:33 |
|
||
|
Нужна помощь. Макрос для сохранения слияния.
|
|||
|---|---|---|---|
|
#18+
Ага, хорошо, я вник Теперь только один вопрос - что вы желаете в итоге? Понимаете, в чём дело - одно, если действия исполняете вы, с правами на доступ ко всей инфе - и другое - пользователи, открывшие готовый документ... Вы - со стороны сервера, и пользователи - на клиентах, и не знающие, откуда вообще инфа взялась... Я, конечно, попробую вдумчиво разобраться с вашим куском кода - но это не поможет, ИМХО, понять весь ваш процесс движения документа. Или давайте обсудим это приватно, мои данные в профиле есть... Даже в эти выходные я буду доступен каждый день после 15-00 мск... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 03:01 |
|
||
|
Нужна помощь. Макрос для сохранения слияния.
|
|||
|---|---|---|---|
|
#18+
может пригодится: Макрос создания документов Word по данным таблицы Excel (без использования функции слияния) http://excelvba.ru/code/CreateWordDocuments ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 07:04 |
|
||
|
Нужна помощь. Макрос для сохранения слияния.
|
|||
|---|---|---|---|
|
#18+
giantil, автор1. Чтобы макрос был общий для всех документов. Сейчас текст "Договор_" просто прописаны в коде. Тут я думаю можно заменить эту часть на закладку, которая будет для всех файлов одинаково называться, но ссылаться на нужный текст. Как это прописать в коде - не знаю. откуда запускается макрос что значит --Сейчас текст "Договор_" прописано в коде автор2. Чтоб документ шаблон был 1, а не 4 как сейчас. Т.е. все содержалось бы в 1м вордовском файле, разделённом скажем разрывами разделов, но сохранялось бы в 4 разные результирующие файла. Чтоб не запускать 4 шаблона и не нажимать 4 раза "да" для подключения к источнику данных. Тогда закладки, предложенные мной в п.1. не проканают, т.к. файл у нас 1 и одну и туже закладку в два места не воткнёшь. любое количество вставок некого поля в документ(не мое, но и у меня есть аналог--попроще) http://excelvba.ru/code/CreateWordDocuments хотя можно инфу по 1 строке скачать в рабочую область и на нее настроить закладки, вряд ли инфы много авторкак вы вставляете табличную часть одинакова ли она в разных шаблонах, хотя в некоторых ее и нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 10:21 |
|
||
|
Нужна помощь. Макрос для сохранения слияния.
|
|||
|---|---|---|---|
|
#18+
giantil, авторC:\test\002-12\ДОГОВОР_002-12.doc C:\test\002-12\СМЕТА_002-12.doc C:\test\002-12\НАКЛАДНАЯ_002-12.doc C:\test\002-12\АКТ_002-12.doc еще вопрос--чем отличаются шаблоны если не сложно--выложите хотя бы с условной инфой и многострочной табличной частью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 10:25 |
|
||
|
Нужна помощь. Макрос для сохранения слияния.
|
|||
|---|---|---|---|
|
#18+
автороткуда запускается макрос сейчас он в модуле шаблона normal.dot, запускаю пока через меню макросов, позже м.б. кнопочку сделаю. авторчто значит --Сейчас текст "Договор_" прописано в коде значит, что эта часть названия файла просто прописана в коде (в переменной File_name) автор http://excelvba.ru/code/CreateWordDocuments вроде стоящая вещь, но для моих нужд её адаптация, боюсь, займёт больше времени и сил, чем доработка того, что есть до чего-то приемлемого. Вообще скажите, а чем плохо слияние, что его так не любят? может быть я чего-то не знаю... авторхотя можно инфу по 1 строке скачать в рабочую область и на нее настроить закладки, вряд ли инфы много авторкак вы вставляете табличную часть одинакова ли она в разных шаблонах, хотя в некоторых ее и нет не совсем уловил мысль... таблица в экселе заполняется вручную, через слияние данные переносятся в ворд автореще вопрос-чем отличаются шаблоны всем, просто они вытаскивают из экселя одни и те же данные: название фирмы, фио, номер и дату договора и т.д. авторесли не сложно--выложите хотя бы с условной инфой и многострочной табличной частью может быть немного позже... вечером или завтра ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 14:30 |
|
||
|
Нужна помощь. Макрос для сохранения слияния.
|
|||
|---|---|---|---|
|
#18+
идею с закладками реализовал (п.1) теперь в каждом документе шаблоне слова в заголовке (ДОГОВОР, СМЕТА, АКТ, НАКЛАДНАЯ) у меня обозначены как закладка doctype, которая используется в переменной File_name Код: vbnet 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2012, 14:47 |
|
||
|
Нужна помощь. Макрос для сохранения слияния.
|
|||
|---|---|---|---|
|
#18+
Друзья, то что описал выше работает и работает хорошо. но хочется сделать лучше =) Нужна ваша помощь! Сейчас описанный выше код используется для слияния и сохранения файлов под необходимыми именами. Для имени файла используется одно из значений полей слияния - DataSource.DataFields("contract") - номер договора, и закладка doctype (тип документа: Договор ,Акт, Накладная) которая выделяет кусок текста в документе которое используется для названия файла сохранения. Есть 3 исходных документа слияния (те самые Договор ,Акт, Накладная) подключенных к экселю, каждый из них макрос сохраняет как и куда надо. Задача следующая: объединить эти три документа в 1 (чтоб запускать 1 документ и один раз запускать макрос, а не три). Но при этом чтоб они сохранялись раздельно под теми же именами. Т.е. закладка уже не прокатит. Удобное решение сохранения одного документа в несколько приведено тут , но во-первых, разделение разделами не желательно, т.к. разделы мне нужны для того чтоб менять форматирование колонтитулов во-вторых, я не могу придумать как интегрировать мой код и код по ссылке, что имена были какие мне надо. Ситуация у меня всегда стандартная (по количеству листов в документе и т.д.) отличаются лишь данные слияния... может быть как это это сделать без цикла for ... next, а просто резать "общий "документ на три нужные части и сохранять под заданными именами с одной лишь "переменной" DataSource.DataFields("contract") В общем помогите пожалуйста довести до ума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2012, 22:44 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=37697130&tid=2175916]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
172ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 467ms |

| 0 / 0 |
