Страницы: 1
RSS
Можно ли сделать повторяющиеся сквозные строки в нижней части страницы
 
Здравствуйте! Помогите пожалуйста решить такую проблему: Есть форма описи в которой на каждой странице в нижней части повторяется определенный неизменный диапазон(Опись (лист 1)).Но работать с ней в электронном виде сложно т.к. описываемое постоянно меняется и приходится переставлять,передвигать все. Легче было бы, что бы с документом можно работать и этот диапазон ставился бы только при печати на каждой странице(Опись (лист 2) диапазон выделен желтым), но у меня что то не получается сделать сквозные строки в нижней части каждого листа. Можно ли так? Если можно то подскажите пожалуйста как? <BR><STRONG>Файл удален</STRONG> - велик размер. [Модераторы]
 
{quote}{login=Nikas}{date=30.05.2010 01:10}{thema=Можно ли сделать повторяющиеся сквозные строки в нижней части страницы}{post}Здравствуйте! Помогите пожалуйста решить такую проблему:  
Есть форма описи в которой на каждой странице в нижней части повторяется определенный неизменный диапазон(Опись (лист 1)).Но работать с ней в электронном виде сложно т.к. описываемое постоянно меняется и приходится переставлять,передвигать все. Легче было бы, что бы с документом можно работать и этот диапазон ставился бы только при печати на каждой странице(Опись (лист 2) диапазон выделен желтым), но у меня что то не получается сделать сквозные строки в нижней части каждого листа. Можно ли так? Если можно то подскажите пожалуйста как?{/post}{/quote}  
Наверняка можно сделать используя два листа, первый лист заполняем данные,  
второй лист (для печати) заполняется формулами или макросом, итоговые две последние страницы лучше разместить вверху, так при печати легче будет реализовать подсчет заполненных страниц описи, и последнее размер области печати нельзя будет изменить......как то так  
да файл лучше бы прикреплять в формате xls количество помощников увеличиться,  
если такой способ вам подойдет отпишитесь.
Спасибо
 
Добавлю - с Правилами ознакомиться не помешает.
 
Доброго вечер столкнулся с аналогичной проблемой.  
На листе воспользовался функией сквозные строки, для того что бы сохранить шапку при печати, но к сожалению понадобилось наличие сквозной строки в нижней части печатуемого листа.  
Надеюсь что кто-нибудь уже сталивался с этим и имеет удачный опыт решение этой задачи. ( Желтым цветом я выделил ту область которую я бы хотел видеть  в качестве сквозной строки при печати листа).
 
Не увидел я там желтого. Дальтонизм?
Я сам - дурнее всякого примера! ...
 
Извиняюсь перепутал
 
В вашем случае "подвал", вероятно, можно сделать картинкой и вставить её в нижний колонтитул.    
 
Все равно Даты и подписи проставляются вручную на распечатке.
EXCEL
 
А если так?  
Sub Print_Title()  
' Макрос записан 22.09.2010 (Sergey)  
Dim a%, b&, i%, c&, d&, e  
e = ActiveSheet.PageSetup.PrintTitleRows 'Select '.Count '= "$1:$7"  
e = Range(e).Rows.Count  
   ActiveSheet.Copy Before:=Sheets(2)  
   ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value  
a = ActiveSheet.HPageBreaks(1).Location.Row  
b = Cells(Rows.Count, 1).End(xlUp).Row  
c = b \ a  
Range(Cells(b - 3, 1), Cells(b, 13)).Copy  
d = a  
For i = 1 To c  
   Cells(d - 4, 1).Insert Shift:=xlDown  
d = a + d - e - 1  
b = Cells(Rows.Count, 1).End(xlUp).Row  
Range(Cells(b - 3, 1), Cells(b, 13)).Copy  
Next  
   Application.CutCopyMode = False  
End Sub
Я сам - дурнее всякого примера! ...
 
Точней так:  
Sub Print_Title()  
' Макрос записан 22.09.2010 (Sergey)  
   Dim a%, b&, d&, e  
   e = ActiveSheet.PageSetup.PrintTitleRows  
   e = Range(e).Rows.Count  
   ActiveSheet.Copy Before:=Sheets(2)  
   ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value  
   a = ActiveSheet.HPageBreaks(1).Location.Row  
   b = Cells(Rows.Count, 1).End(xlUp).Row  
   Range(Cells(b - 3, 1), Cells(b, 13)).Copy  
   d = a  
   Do While d < b  
       Cells(d - 4, 1).Insert Shift:=xlDown  
       d = a + d - e - 1  
       b = Cells(Rows.Count, 1).End(xlUp).Row  
       Range(Cells(b - 3, 1), Cells(b, 13)).Copy  
   Loop  
   Application.CutCopyMode = False  
End Sub
Я сам - дурнее всякого примера! ...
 
Огромное спасибо KukIP за помощь, хотел уточнить каким образом можно сделать чтобы между выделенной часть и самой таблицей формировалась пустая сторока.  
Т.е вставка выделенного объекта была не сразу поск таблицы а +1 шаг
 
А сразу разродиться? Чего было не выделить цветом вместе с пустой? Я на работу собираюсь. Так?  
Sub Print_Title()  
' Макрос записан 22.09.2010 (Sergey)  
   Dim a%, b&, d&, e  
   e = ActiveSheet.PageSetup.PrintTitleRows    'Select '.Count '= "$1:$7"  
   e = Range(e).Rows.Count  
   ActiveSheet.Copy Before:=Sheets(2)  
   ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value  
   a = ActiveSheet.HPageBreaks(1).Location.Row  
   b = Cells(Rows.Count, 1).End(xlUp).Row  
   Range(Cells(b - 4, 1), Cells(b, 13)).Copy  
   d = a  
   Do While d < b  
       Cells(d - 5, 1).Insert Shift:=xlDown  
       d = a + d - e - 1  
       b = Cells(Rows.Count, 1).End(xlUp).Row  
       Range(Cells(b - 4, 1), Cells(b, 13)).Copy  
   Loop  
   Application.CutCopyMode = False  
End Sub
Я сам - дурнее всякого примера! ...
 
Range(Cells(b - 4, 1), Cells(b, 13)).Copy  
 
Cells(d - 5, 1).Insert Shift:=xlDown  
 
Range(Cells(b - 4, 1), Cells(b, 13)).Copy
Спасибо
 
О Привет ты уже и сам ответил :)
Спасибо
 
Привет, Дим. Как тебе решение?
Я сам - дурнее всякого примера! ...
 
{quote}{login=KuklP}{date=22.09.2010 10:57}{thema=}{post}Привет, Дим. Как тебе решение?{/post}{/quote}  
Ну что скажешь работал профи  
Как у Вас говорят  - точечная сварка {:-)
Спасибо
 
Почти что в общем виде, с предположением, что высота заменяемых строк в "подвале", равна высоте строк подвала.  
 
   Sub AddFooterToExcel()  
       Try  
           Dim xls As Excel.Application = Globals.ThisAddIn.Application  
           Dim ash As Excel.Worksheet = CType(xls.ActiveSheet, Excel.Worksheet)  
 
           'ModuleCommon.ClearExcessRowsAndColumns(xls, xls.ActiveWorkbook)  
 
           Globals.ThisAddIn.Application.ScreenUpdating = False  
 
           Dim sel As Excel.Range = xls.ActiveWindow.Selection  
           If sel.Areas.Count <> 1 Then  
               MessageBox.Show("Необходимо выбрать только один блок строк.", "", MessageBoxButtons.OK)  
               Exit Sub  
           End If  
 
           Dim selrow As Integer = sel.Areas(1).Row  
           Dim selcou As Integer = sel.Areas(1).Rows.Count  
 
           Dim pagecou As Integer = ash.HPageBreaks.Count  
           If pagecou = 0 Then Exit Sub  
 
           Dim item1 As Excel.HPageBreak = ash.HPageBreaks(1)  
           Dim item1row As Integer = item1.Location.Row  
 
           If selrow + selcou <> item1row Then  
               MessageBox.Show("Нижняя строка выбранного для ""подписи"" блока строк должна быть нижней строкой первой страницы.", "", MessageBoxButtons.OK)  
               Exit Sub  
           End If  
 
           With ash.Rows((selrow).ToString).EntireRow.Borders(Excel.XlBordersIndex.xlEdgeTop)  
               .LineStyle = Excel.XlLineStyle.xlDouble  
               .ColorIndex = 0  
               .TintAndShade = 0  
               .Weight = Excel.XlBorderWeight.xlThin  
           End With  
 
 
           Dim n As Integer = ash.HPageBreaks.Count  
           Dim ii As Integer = 2  
 
           Do While ii <= ash.HPageBreaks.Count  
               Dim row As Integer = ash.HPageBreaks(ii).Location.Row  
 
               For iii As Integer = 0 To selcou - 1  
                   ash.Cells(row - selcou, 1).EntireRow.insert()  
               Next  
 
               Dim selrange As Excel.Range = xls.Rows((selrow).ToString + ":" + (selrow + selcou - 1).ToString).EntireRow  
               selrange.Copy()  
 
               ash.Cells(row - selcou, 1).PasteSpecial(Excel.XlPasteType.xlPasteValues)  
               ash.Cells(row - selcou, 1).PasteSpecial(Excel.XlPasteType.xlPasteFormats)  
 
               ii += 1  
           Loop  
 
           ' все сделали и давай посмотрим сколько сейчас страниц  
           Dim nn As Integer = ash.HPageBreaks.Count  
 
 
           Dim lselrange As Excel.Range = xls.Rows((selrow).ToString + ":" + (selrow + selcou - 1).ToString).EntireRow  
           lselrange.Copy()  
 
           Dim ur As Excel.Range = ash.UsedRange  
           Dim lr As Integer = ur.Row + ur.Rows.Count - 1  
           ash.Cells(lr + 1, 1).PasteSpecial(Excel.XlPasteType.xlPasteValues)  
           ash.Cells(lr + 1, 1).PasteSpecial(Excel.XlPasteType.xlPasteFormats)  
 
           ' еще добавили и давай снова посмотрим сколько сейчас страниц  
           Dim nnn As Integer = ash.HPageBreaks.Count  
           If nn <> nnn Then  
               Dim flr As Integer = ash.HPageBreaks(nnn).Location.Row  
               For iii As Integer = 0 To selcou - 1  
                   ash.Cells(flr - selcou, 1).EntireRow.insert()  
               Next  
               Dim selrange As Excel.Range = xls.Rows((selrow).ToString + ":" + (selrow + selcou - 1).ToString).EntireRow  
               selrange.Copy()  
               ash.Cells(flr - selcou, 1).PasteSpecial(Excel.XlPasteType.xlPasteValues)  
               ash.Cells(flr - selcou, 1).PasteSpecial(Excel.XlPasteType.xlPasteFormats)  
           End If  
 
       Catch ex As Exception  
           Globals.ThisAddIn.Application.ScreenUpdating = True  
           Exit Sub  
       Finally  
           Globals.ThisAddIn.Application.ScreenUpdating = True  
       End Try  
 
   End Sub
EXCEL
Страницы: 1
Читают тему
Наверх