Страницы: 1
RSS
Добавить реквизиты макросом в конец документа
 
Всем, доброго времени суток.  
Третий день бьюсь над вопросом. Может у кого-нибудь есть идеи?  
Необходимо в файл (см. вложение) доваить макросом реквизиты (либо в нижний колонтитул, либо в конец файла). Проблема в том, что листов для печати может быть больше одного. Т.е. каждый раз приходится реквизиты вносить в ручную в конец документа. Можно ли как-то средствами VBA написать макрос, который будет определять конец документа и вставлять необходимые данные в конце документа?
 
Всем, доброго времени суток.  
Третий день бьюсь над вопросом. Может у кого-нибудь есть идеи?  
Необходимо в файл (см. вложение) доваить макросом реквизиты (либо в нижний колонтитул, либо в конец файла). Проблема в том, что листов для печати может быть больше одного. Т.е. каждый раз приходится реквизиты вносить в ручную в конец документа. Можно ли как-то средствами VBA написать макрос, который будет определять конец документа и вставлять необходимые данные в конце документа?
 
В макросах Module2 записывает реквизиты в нижний колонтитул.  
В предварительном просмотре можно увидеть результаты.  
Если включить макрорекодер и зайти в меню вставка-колонтитулы, можно записать настройку, которая вам нужна, после чего запускать макрос по нужному событию.
 
Дело в том, что реквизиты добавляются в каждый колонтитул и на каждый лист. А мне нужно, чтобы добавлялись только в конец документа на последний лист. Но все равно, спасибо.
 
Дело в том, что реквизиты добавляются в каждый колонтитул и на каждый лист. А мне нужно, чтобы добавлялись только в конец документа на последний лист. Но все равно, спасибо.
 
Как сделать только последнюю стрнаницу не подскажу.  
А вот что касается первой - запросто. В параметрах колонтитулов есть пункт: "особый колонтитул для первой страницы", - т.е. если возможно, поспробуйте на первой странице документа разместить информацию как для последней и установите для ее особый колонтитул. В результате получите реквизиты будут только на одной странице.  
 
Исправленый код в примере.  
 
 
Ну, а если уж совсем припечет, то можно попробовать подсчитать количество страниц, определить свободную область, достаточную для реквизитов и туда записывать информацию. Но вы понимаете, что это довольно нудное дело?:)
 
Какая у вас версия Excel?
 
Через колонтитулы не получится скорее всего, можно разные сделать для первой, для чётных и нечётных, а для последней не видел.
 
Версия Excel 2010
 
{quote}{login=}{date=07.11.2012 09:57}{thema=}{post}Через колонтитулы не получится скорее всего, можно разные сделать для первой, для чётных и нечётных, а для последней не видел.{/post}{/quote}  
В том-то вся и проблема, что колонтитулами видимо никак не получится. Была идея "втыкать" реквизиты в конец документа, но проблема в том, как средствами VBA "научить" макрос находить конец документа Excel, а потом вставлять нужные данные в конец документа?
 
Как вариант, если работать в режиме разметки страницы, можно найти последнюю использованную строку документа: [A1].SpecialCells(xlLastCell).Row, сделать отступ, скажем еще на 2-3 строки и вводить реквизиты. Но минус такого метода в том, что xlLastCell находит последнюю в UsedRange, т.е. эта область может быть пустой.
 
Еще вариант разбить документ на страницы по листам книги. Т.е. редактировать не ActiveSheet.PageSetup.Pages, a AtciveWorkbook.Worksheets. Для каждого листа задать область печати через .PageSetup.PrintArea = "..." и колонтитул только для одного Worksheet.  
 
Тогда определить конец документа становится проще: ActiveWorkbook.Worksheets.Count, определит последний лист, для которого требуется указать колонтитул, после чего распечатать колекцию Worksheets.  
 
Как-то так
 
{quote}{login=Феликс}{date=08.11.2012 10:06}{thema=Re: }{post}{quote}{login=}{date=07.11.2012 09:57}{thema=}{post}{/post}{/quote}проблема в том, как средствами VBA "научить" макрос находить конец документа Excel{/post}{/quote}<BR>Вопрос обсуждался многократно. Терзаем поиск:  http://yandex.ru/sitesearch?text=%D0%BD%D0%B0%D0%B9%D1%82%D0%B8+%D0%BF%D0%BE%D1%81%D0%BB­%D0%B5%D0%B4%D0%BD%D1%8E%D1%8E+%D1%81%D1%82%D1%80%D0%BE%D0%B­A%D1%83&searchid=84804&lr=22&web=0 <BR>Ещё сюда загляните:  http://www.excel-vba.ru/chto-umeet-excel/kak-opredelit-poslednyuyu-yachejku-na-liste-cherez-vba/
 
Код листа1  
 
Option Explicit  
Private Sub Rekvizit()  
Dim iLastRow As Long  
iLastRow = Cells(Rows.Count, 2).End(xlUp).Row  
Cells(iLastRow + 7, 2) = "Директор Департамента управления"  
Cells(iLastRow + 8, 2) = "собственными активами в РФ ЗАО «…………...»"  
Cells(iLastRow + 8, 8) = "/……………………….. /"  
Range(Cells(iLastRow + 7, 2), Cells(iLastRow + 8, 8)).Font.Bold = True  
Cells(iLastRow + 9, 2) = "на основании доверенности № 21/12 от 01.09.2012"  
End Sub
 
Только идея.  
Можно использовать макрофункцию:  
формула показывающая сколько листов будет выведено на печать. Выводимое значение зависит от установок печати, то ли для всего документа, то ли для активного листа. Используется макрофункция - поэтому макросы должны быть разрешены. Формулу можно ввести в любую ячейку листа.  
=стр  
=ПОЛУЧИТЬ.ДОКУМЕНТ(50+ТДАТА()*0)  
 
Печатаем макросом листы с первого по предпоследний, потом добавляем колонтитул и печатаем последний.
Страницы: 1
Читают тему
Наверх