Страницы: 1
RSS
Неизменяемые области внизу документа, Excel 2007
 
Здравствуйте.
Ситуация:
Делаю выгрузку отчёта ТОРГ-12 из Базы данных, т.е. есть некоторый шаблон (условно шаблон, потому что файл с расширением *.xls), который наполняется данными, сам шаблон создан в excel 2007
Проблема: при выгрузке большого количества строк, нижняя часть формы ТОРГ-12 съезжает и разрывается, что не приемлемо
Задача: сделать так, что бы нижняя часть отчёта не разрывалась и ,если хватает места печаталась на первой странице, если не хватает, то на второй странице печаталась полностью с последней строчкой накладной
Вопрос: как это сделать? можно ли это сделать стандартными средствами или это можно сделать только с помощью макросов, если это можно сделать только с помощью макросов, то можно ли увидеть код данного макроса с комментариями, пожалуйста
Спасибо большое
 
Скорее всего это происходит из-за разных версий файлов. А нельзя файл версии 2003 перегнать в 2007 версию, тогда ничего съезжать не должно. Нужно пример смотреть
Изменено: Алексей Иванов - 28.08.2014 15:07:31
Фрилансер
 
Радует постановка задачи на пальцах... без файла что есть и что надо.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
Алексей Иванов пишет: А нельзя файл версии 2003 перегнать в 2007 версию?
тот кто открывает этот отчёт, то же имеет excel 2007, причина не в этом, это можно как-то сделать, но с помощью макросов, конкретного кода по этой фишке я не нашёл, могу почитать синтаксис VBA, но я да же не могу представить алгоритм данного макроса, если кто-то делал такие вещи, то помогите пожалуйста, как это всё можно реализовать? какая должна быть логика макроса? на какие параметры должно смотрется и в общем, помогите пожалуйста ))) я такого не делал, вот и тону
 
Можно. Но нужно видеть исходные данные
Фрилансер
 
товарную накладную выгрузить?
 
Ну да, в ней же проблемные строки.
Фрилансер
 
Вот, в зип архиве
 
Это конечный файл, вот мне нужно что бы при его формировании срабатывал макрос, который сделает неразрывным нижнюю часть + последнюю строчку.
Приду завтра, рабочий день уже кончился
 
А формируется он откуда? Из какой БД? если нужно что бы перенос осуществлялся при формировании, то изменения нужно вносить в ту программу, которая этот файл формирует. А так можно только открыть этот файл после формирования и запустить макрос например.
Изменено: Алексей Иванов - 28.08.2014 15:48:08
Фрилансер
 
Цитата
R-Magistr пишет: Это конечный файл
Не верю. Это шаблон. Подгрузите тот файл, где строчки "съезжают". И вместе с ним на другом листе желаемый результат. А голый вид ТОГР-12 проблемы Вашей не раскрывает - он умещается и ничего там не разрывается.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Алексей Иванов пишет: А так можно только открыть этот файл после формирования и запустить макрос например.Мн
Мне именно это и нужно, запустить макрос, который бы работал с этой областью. Т.е. необходимо что бы макрос рассчитывал хватает ли место на этой странице для размещение на ней всей конечной части, если нет, то печатать её на следующей вместе с последней (полезной) строчкой самой накладной, под выражением полезная строчка, я подразумеваю строку с наименованием товара
Изменено: R-Magistr - 29.08.2014 07:29:56
 
Ну у меня получилось вот так
Код
Sub f()
   'Нижняя граница области для печати
oblprint = ActiveSheet.HPageBreaks(colprint).Location.Row
   'Последняя строка документа
endprint = Cells(Rows.Count, "I".End(xlUp).Row
   'Строка "итого"
r = Cells.Find("Итого") .Row
If oblprint < endprint Then
   For i = 1 To oblprint - r + 1
      Cells(r - 1, 1).EntireRow.Insert
   Next
End If
End Sub
Попробуйте на нормально заполненном файле
Изменено: Алексей Иванов - 29.08.2014 10:17:54
Фрилансер
 
Вариант
Код
Sub Разбивка_листов() 'при масштабе печати 100% и полях: верхнее 1,9 нижнее 0,9
Application.ScreenUpdating = False 'откл обновления экрана
With ActiveSheet.PageSetup
.PrintTitleRows = "$28:$28" 'заголовки столбцов на всех страницах
End With
With Worksheets(1)
x = .HPageBreaks.Count ' кол-во страниц
y = .UsedRange.Rows.Count 'последняя заполненная строка
End With
z = y - 58 - 52 * (x - 1) 'кол-во строк накладной на последней странице
If z > 0 And z < 25 Then
    ActiveWindow.View = xlPageBreakPreview
    Set ActiveSheet.HPageBreaks(x).Location = Rows(y - 25) 'смещение до последней строки накладной
    ActiveWindow.View = xlNormalView
End If
Application.ScreenUpdating = True 'вкл обновления экрана
End Sub
Изменено: Ёк-Мок - 29.08.2014 12:56:20
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
Страницы: 1
Наверх