Автоматизация верстки телефонного справочника из Excel

  • Автор темы Автор темы den1762
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Ответ: Автоматизация верстки телефонного справочника из Excel

Создается впечатление, что слепить все дубли в один — это какое-то плевое дело, о котором все знают. И я хочу знать. Расскажите мне, пожалуйста.:)
Ну это можно сделать водя мышкой и клацая на пробел.
Особо ленивые пишут макросы типа такого
Код:
p = ""
For i = 2 To 9000
    Range("E" + Trim(Str(i))).Select
    a = ActiveCell.FormulaR1C1
    If a = p Then ActiveCell.FormulaR1C1 = "" Else p = a
Next i
Столбец E и начальную сточку 2 и количество строчек можно поменять на нужные циферки.
 
Ответ: Автоматизация верстки телефонного справочника из Excel

Спасибо с макросом все получилось, а вот про пробел не поняла. Видимо куда-то не туда думаю.
Макрос вдохновил на свое решение, через формулы. Правда способ с дополнительным столбцом, куда надо ввести формулу =ЕСЛИ(A3=A2;"";A3) и растянуть ее вниз. По сути макрос делает тоже самое, тем же способом, но проще, без лишних столбцов.
 
Ответ: Автоматизация верстки телефонного справочника из Excel

С формулой решение тоже неплохое. А пробел это я опечатался, имелся в виду делит.
 
Ответ: Автоматизация верстки телефонного справочника из Excel


Не по теме:
А пробел это я опечатался, имелся в виду делит.
Ааа, самый популярный метод — ручками. :)

 
Ответ: Автоматизация верстки телефонного справочника из Excel

Создается впечатление, что слепить все дубли в один — это какое-то плевое дело, о котором все знают. И я хочу знать. Расскажите мне, пожалуйста.:) Для остальных трёх пунктов я вижу способы решения и в Word, и в Indesign без особых усилий. А как удалить все дубли и оставить только первый экземпляр? Хоть бы где: Word, InDesign, на худой конец Excel. Буду очень благодарна за совет.

Или подобно этому набору.
 
Ответ: Автоматизация верстки телефонного справочника из Excel

Если в InDesign требуется убрать повторы, то есть мощнейший инструмент поиск-замена с использованием GREP.
Делается это так: первое найденное выражение нужно заключить с скобки, тогда его повтор можно будет найти как \1.
Find what: (пример)\r\1
Отыщет два подряд слова "пример", отделенные знаком абзаца.
Цифра (в данном случае 1) соотвествует номеру выражения, заключенного в скобки. Если таких выражений несколько, то и номеров будет несколько.
Менять на $1.

Что касается затронутой ТС задачей, то мы издаем такой справочник (1200+ страниц) через XML в InDesign. Это обусловлено тем, что много картинок (реклама и т.п.). Но часто ли придется обновлять? Печатные версии корпоративных справочников редко исдаются чаще раза в год.
 
Ответ: Автоматизация верстки телефонного справочника из Excel

есть мощнейший инструмент поиск-замена с использованием GREP.
Возможно данным инструментом решить данные этапы?
Этап 1. Убираем дубли - это понятно, как реализовать.
Этап 2. Выше каждой строки с городами создается пустая строка - не понятно, как это делается в автомате в Excel. Это функция?
Этап 3. Смещаем название города на одну строку вверх. Наверное выделяем, вырезаем и вставляем со смещением?
Этап 4. Перемещаем название городов в право на свободные ячейки. Тоже не понятно как сделать автоматически.

... мы издаем такой справочник (1200+ страниц) через XML в InDesign.
Переводите из БД в XML с XSLT-инструкцией?

Но часто ли придется обновлять? Печатные версии корпоративных справочников редко исдаются чаще раза в год.
Один раз в квартал, тираж 1 тыс. экз.
 
Ответ: Автоматизация верстки телефонного справочника из Excel

Поиск-замена с GREP делается уже в InDesign.

Выгрузка из БД в формате XML осуществляется программистом в том виде, какой понимает InDesign. А именно: прописывабтся адреса всех картинок и стили всех абзацев.

Что касается таблиц, это можно сделать тоже. Нужно выгнать структуру XML из InD и поизучать ее, а по образу и подобию выгонять файлы из БД в потребном для вас формате.
 
Ответ: Автоматизация верстки телефонного справочника из Excel

Нужно выгнать структуру XML из InD и поизучать ее, а по образу и подобию выгонять файлы из БД в потребном для вас формате.

Совершенно верно. Об этом уже шла речь в п. 11. Повторю для den1762 еще раз.

Сверстайте часть таблицы так, как она должна выглядеть, со всеми необходимыми стилями (табличными, текстовыми). Экспортируйте эту верстку в XML. Получится текстовый файл с определенной структурой -- образец. Если такой файл импортировать в пустой документ и присвоить затем стили содержимому, получится исходная верстка. Этот же файл при импорте можно прилинковать. Если затем отредактировать его содержимое (внешний XML) и сохранить, то в панели Links активируется возможность проапдейтить этот файл. Что при этом произойдет -- думаю понятно.

Таблицу в экселе с исходными данными нужно сохранить также как XML. Но структуру этого файла необходимо привести в соответствие со структурой "образцового" XML. Это можно сделать различными способами и соответствующим софтом. Индизайн предлагает это делать "на лету" во время импорта XML, указав файл-инструкцию (XSLT). Этот текстовый файл (XSLT) содержит информацию о том, что определенный тег, "содержимое" этого тега и его место в структуре нужно изменить так, чтобы эти параметры тега соответствовали параметрам образцового XML.

Написать этот небольшой файл по силам любому вменяемому web-программисту. Можно даже написать только фрагмент файла с несколькими тегами, а затем, по имеющемуся образцу, дописать его до конца самостоятельно. Это не сложная задача.

И еще пару слов. Поскольку предполагается частое обновление, во избежание полной переверстки нового текста, я бы пошел по пути предварительной конвертации исходного XML в образцовый, для того чтобы XML с обновленными данными можно было связать (Links) и затем просто апдейдить о чем выше я уже упоминал. Есть много различного софта (google: xml to xml), позволяющего это сделать, но можно это сделать и в Индизайне. Для этого импортируйте исходный "экселевский" XML в пустой документ с указанием XSLT-инструкции. Затем, то что импортировалось, экспортируйте обратно в XML. Это и будет необходимый XML, который можно будет "подложить" вместо устаревшего.
 
Статус
Закрыто для дальнейших ответов.