Здравствуйте! Помогите пожалуйста решить такую проблему: Есть форма описи в которой на каждой странице в нижней части повторяется определенный неизменный диапазон(Опись (лист 1)).Но работать с ней в электронном виде сложно т.к. описываемое постоянно меняется и приходится переставлять,передвигать все. Легче было бы, что бы с документом можно работать и этот диапазон ставился бы только при печати на каждой странице(Опись (лист 2) диапазон выделен желтым), но у меня что то не получается сделать сквозные строки в нижней части каждого листа. Можно ли так? Если можно то подскажите пожалуйста как? <BR><STRONG>Файл удален</STRONG> - велик размер. [Модераторы]
Можно ли сделать повторяющиеся сквозные строки в нижней части страницы
30.05.2010 01:10:07
|
|
|
|
30.05.2010 11:56:12
Добавлю - с Правилами ознакомиться не помешает.
|
|
|
|
22.09.2010 19:03:30
Доброго вечер столкнулся с аналогичной проблемой.
На листе воспользовался функией сквозные строки, для того что бы сохранить шапку при печати, но к сожалению понадобилось наличие сквозной строки в нижней части печатуемого листа. Надеюсь что кто-нибудь уже сталивался с этим и имеет удачный опыт решение этой задачи. ( Желтым цветом я выделил ту область которую я бы хотел видеть в качестве сквозной строки при печати листа). |
|
|
|
22.09.2010 19:44:54
Не увидел я там желтого. Дальтонизм?
Я сам - дурнее всякого примера! ...
|
|
|
|
22.09.2010 19:54:31
Извиняюсь перепутал
|
|
|
|
22.09.2010 20:18:54
В вашем случае "подвал", вероятно, можно сделать картинкой и вставить её в нижний колонтитул.
Все равно Даты и подписи проставляются вручную на распечатке.
EXCEL
|
|
|
|
22.09.2010 21:20:08
А если так?
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
Я сам - дурнее всякого примера! ...
|
|
|
|
22.09.2010 21:36:45
Точней так:
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
Я сам - дурнее всякого примера! ...
|
|
|
|
22.09.2010 22:38:08
Огромное спасибо KukIP за помощь, хотел уточнить каким образом можно сделать чтобы между выделенной часть и самой таблицей формировалась пустая сторока.
Т.е вставка выделенного объекта была не сразу поск таблицы а +1 шаг |
|
|
|
22.09.2010 22:49:46
А сразу разродиться? Чего было не выделить цветом вместе с пустой? Я на работу собираюсь. Так?
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
Я сам - дурнее всякого примера! ...
|
|
|
|
22.09.2010 22:55:19
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
|
|||
|
|
22.09.2010 22:56:06
О Привет ты уже и сам ответил :)
|
|||
|
|
22.09.2010 22:57:51
Привет, Дим. Как тебе решение?
Я сам - дурнее всякого примера! ...
|
|
|
|
22.09.2010 23:02:31
{quote}{login=KuklP}{date=22.09.2010 10:57}{thema=}{post}Привет, Дим. Как тебе решение?{/post}{/quote}
Ну что скажешь работал профи Как у Вас говорят - точечная сварка {:-)
|
|||
|
|
23.09.2010 13:31:00
Почти что в общем виде, с предположением, что высота заменяемых строк в "подвале", равна высоте строк подвала.
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
|
||||
|
|
|||
Читают тему