0
- 19.03.2015 - 21:49
|
Возник интересный вопрос. Допустим есть шаблон excel - сверху шапка, снизу подвал, а посредине строки с данными. Шаблон формата А4. И есть набранная база в другом листе. Причем, в каждой строке базы может быть длинный текст (за счет чего высота строки может быть в 2-3-4.. раза больше стандартной - в зависимости от количества текста). Так вот, нажимая на кнопку "Сформировать", данные из базы переносятся в шаблон (в среднюю часть). Если в шаблоне заканчивается место, то автоматически создается новый лист (такой же шаблон) и база продолжает заполняться в спец. место в шаблоне, т.е. в среднюю часть листа. И т.д. пока не закончится база. Таким образом может сформироваться комплект листов формата А4, подготовленный к печати. А вопрос в следующем. Как сделать так, чтобы геометрические размеры формы (шаблона) оставались неизменными независимо от количества строк? Ведь, к примеру, в сформированном комплекте листов формата A4 один лист может содержать 10 строк, а другой лист - 5 строк, а третий лист - 15 строк - все зависит от заполненности строк базы. Реально ли создать подобную реализацию? PS На самом деле в Word это по умолчанию возможно - колонтитулы и в средине табличка, которая в зависимости от заполнения переходит на новую страницу. Но интересует именно в Excel. | | |
1
- 20.03.2015 - 08:48
| Так как формат остаётся неизменным, то задача сводится к определению необходимого количества строк для имеющегося текста. Не так сложно если формат текста един. | | |
2
- 20.03.2015 - 11:34
|
В Excel тоже есть колонтитулы, и при заполнении "строками" всей страницы - они переходят на следующую страницу (правда целиком, а не построчно как в MS Word. Ваш шаблон сделан неграмотно - правильнее не плодить Листы Excel, а продолжать документ "вниз". Кнопка Сформировать вызывает (или содержит) VBA-код макроса, в нем нужно убрать формирование новых листов и проверить что Разрывы страниц не задаются явно. А еще скажу что просьба попахивает перфекционизмом :-)) В современном мире и в период кризиса это ни к чему. | | |
3
- 20.03.2015 - 18:31
|
1-lexabard >Да, формат текста един. Но в каждом листе будет разное количество строк. Тем не менее, суммарная высота строк (с учетом границ) должна быть одинаковая и составлять формат А4. Они примитивнее, чем в Word, и основную надпись (штамп в чертежах) там не нарисуешь. Цитата:
Безусловно! :) Но у проектировщиков и нормоконтролёров так принято, чтобы всё было четко и по ГОСТу :) Конечно, в AutoCAD я бы без проблем организовал подобное, но требуют в Excel. Поэтому пытаюсь понять, как реализовать без косяков и кривизны эту идею. То, что валяется в инете немного не то, кривовато и т.д. Видимо, без VB здесь не обойтись. Но не силен я в нем. | | |
4
- 20.03.2015 - 19:26
| Дайте ссылку на скрипт. | | |
5
- 20.03.2015 - 23:37
| А это нужно только для печати или еще для чего-то? | | |
6
- 20.03.2015 - 23:50
| Помню были спец листы по черчению с рамками по ГОСТу, так я к тому, что может вы эти рамки отдельно в ворде напечатаете, а содержимое в экселе при печати используете листочки из п.1 =) | | |
7
- 23.03.2015 - 12:10
|
AVF - если "формат А4 с рамкой по ГОСТу" - в Excel можно вставить как "Подложку" листа (ч/з Разметка страницы). Суммарную высоту строк можно "подогнать", дейтсивтельно, только кодом на VBA. Он позволяет вычислять абсолютные координаты лев/верх. углов ячеек и менять их высоту методами: Cells(rownum, columnnum).Left= Cells(rownum, columnnum).Top= Cells(rownum, columnnum).RowHeight= что позволяет вписать в нужную высоту любое кол-во строк с любым текстом. В ГОСТах по вузовским дипломам не содержится правила равенства высоты в текстовых таблицах на разных листах. Трамбуйте нормоконтролеров, а лучше дайте правильно взятку и посадите того козла/козу. | | |
8
- 23.03.2015 - 12:50
|
ащиппка: Cells(rownum, columnnum).EntireRow.RowHeight= | |
| Интернет-форум Краснодарского края и Краснодара |