![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
![]()
Есть некий файл отчета. Частично набранный вручную, отформатированный (заголовки, стили , вставлены ссылки на доп. таблицы и рисунки и т.п.). Содержимое файла создается программно - в отдельные файлы docx. Одна глава отчета - один файл.
В итоге надо получить один результирующий большой файл. Под 2003 ворд это решалось так Вставка- Файл - Вставить как ссылку. Потом нужно было открыть файл и обновить эти связи. В 2007-ом ворде это почему то не проходит (( Даже при одном связано файле ворд зависает и в конечном итоге выпадает с ошибкой. Какие еще есть подходы к сборке файлов ? чем можно программно возможно проще заменить решение выше ? |
![]() |
![]() |
![]() |
#2 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
![]()
Как грамотно — не скажу (не прошёл ликбез!), но у меня работает вот такая штука:
{LINK Word.Document.8 D:\\Sasha\\issue20-2-1.doc здесь_тот_кусок \t \* MERGEFORMAT} Как выпонимаете, это поле. Код его вводят между {}, вставленных по Ctrl-F9. Если ключ \t убрать, будет не текст — а рисунок тех страниц (формата DOC), на которые линк (либо на документы в целом). Как с форматом DOCX, не знаю (воможно, Word.Document.9). Если показать надо лишь часть — ставим в те документы закладки (в примере закладка — здесь_тот_кусок, межу путём и ключами). Идея: вероятно, это сработает и в документе *.DOCX, если его собрать из ссылок на разные *.DOC (можно и на *.XLS — Excel.Document.8 либо Excel.Sheet.8); что там с *.XLSx или *.XLSm, не знаю. Повторяю: на современных вордах не испытывал!
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 17.09.2010 в 17:14. Причина: Worksheet→Sheet |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
![]()
с ключом то \r оно сработало.
http://www.bettersolutions.com/word/...I443717572.htm я INCLUDEtext до того использовал - вело к падениям. но все равно тормозит и подглючивает периодически. что с LINK что с INCLUDEtext. стоит только десяток ссылок вставить. то форматирование слетит, то текст вдруг жирным станет. как "железно" собрать интересно ? чем удобнее всего разметить документ чтобы указать где часть текста вставляемая программно ? Последний раз редактировалось bdfy; 17.09.2010 в 17:12. |
![]() |
![]() |
![]() |
#4 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
![]()
Это не то чтобы программно... Спасибо за ссылку на мануал! Там я не наблюдаю ключа \* MERGEFORMAT. Может, он поможет?
Как надёжно, похоже не знают даже сами разработчики. Похоже, вся эта круть используется (на русском пространстве) лишь одним процентом "профессиональных" юзеров ворда. И то дай бог что это так! Иногда часами в сей степи гуляю — ищу интересные кочки!
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 17.09.2010 в 17:25. Причина: "профессиональных" |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
![]()
\* MERGEFORMAT он вставляется автоматом похоже. т.е после пересохранения файла все ссылки получают этот параметр. и у меня ощущение что он наоборот мешает.
вставить линки это одно решение. оно не работает почему то. Части документа я все равно набираю программно, могу и вставить программно в общую записку. Вопрос как общий отчет лучше разметить ? закладками ? как закладку очистить для добавления нового текста ? Set a = ActiveDocument.Range(Start:=ActiveD ocument.Bookmarks(1).Start, End:=ActiveDocument.Bookmarks(1).En d) Set a = ActiveDocument.Bookmarks(1).range перепробовал. выделяет всю закладку целиком. соответственно a.delete удаляет закладку полностью а не очищает ее. ибо я алгоритм вижу так: - найти в документе закладку - удалить ее содержимое (прошлый текст например). либо удалить закладку целиком - вставить в закладку или на ее место новый текст - если закладка удалялось надо создать такую же новую. только вот InsertFile как назло ничего не возвращает (( и как узнать range того что я вставил тогда ? Последний раз редактировалось bdfy; 17.09.2010 в 18:58. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
![]() Код:
ImportFragment тоже ничего не возвращает (( http://msdn.microsoft.com/en-us/libr...tfragment.aspx вот с виду команда которая должна бы мне помочь -но не работает ( неужели единственный путь это ставить две закладки для начала и конца фгагмента ? Последний раз редактировалось bdfy; 19.09.2010 в 19:41. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разделить файл на несколько частей | provodnikam | Microsoft Office Excel | 71 | 17.10.2018 16:33 |
Собрать несколько dbf в один Эксель файл. | Elpis | Microsoft Office Excel | 47 | 16.01.2015 05:29 |
Разобрать,отредактировать и собрать обратно exe файл. | Sintez_ice | Помощь студентам | 13 | 14.11.2012 20:46 |
Как все edit собрать в переменную и записать в файл | f1xed | Помощь студентам | 9 | 07.02.2010 23:18 |
Как сделат грамотно меню | Manonia | HTML и CSS | 5 | 19.01.2010 12:43 |