Здраствуйте
У меня такая проблема: есть некий граф, состоящий из набора элементов и соединительных линий между ними. Необходимо раздвинуть его элементы таким образом, чтобы при печати они (элементы) не оказывались на двух бумажных листах сразу. Но тут и появилась проблема: мое решение привязано к ширине бумажного листа в точках, а его _правильно_ определить у меня не получается. Я пробовал так:
рабоая ширина = общая ширина листа (формат всегда А4) - правое поле - левое поле
Но вот почему-то это не есть так... Полученное значение немного но меньше, чем то "рабочее пространство" листа...
Может кто-нибудь знает в чем тут дело и как получить действительную ширину листа?
Размер "рабочей части" страницы MS Excel
Модератор: Naeel Maqsudov
Не ошибается тот, кто ниченго не делает...
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Для начала попробуйте обойтись параметрами страницы. Раздвиньте узлы графа пошире, а затем определите в параметрах страницы, масштабирование (например, "не более чем на 2 листах в ширину")
Сейчас нет под рукой Excel-я но во вторник посмотрю, что там можно сделать.
Сейчас нет под рукой Excel-я но во вторник посмотрю, что там можно сделать.
Naeel Maqsudov, спасибо за ответ...
И ещё приведу фрагмент кода - может я что-то не так делаю
Параметры PrintTopMargin, PrintFooterMargin и им подобные - соответствующие значения в мм.
Заранее спасибо
Пока так и приходится делать...Раздвиньте узлы графа пошире
К сожалению это не выход - элементы графа содержат текст и одно из основных требований - удобочитаемость этого текста, а ширина графа при масштабировании 100% достигает 5-6 листов...затем определите в параметрах страницы, масштабирование (например, "не более чем на 2 листах в ширину")
И ещё приведу фрагмент кода - может я что-то не так делаю
Код: Выделить всё
Private Const PrintMarginScale As Double = (1 / 25.4)
Public Sub UseCurrentPageSetup(App As Excel.Application, WrkSheet As WorkSheet)
With WrkSheet.PageSetup
.LeftMargin = App.InchesToPoints(PrintMarginScale * PrintLeftMargin)
.RightMargin = App.InchesToPoints(PrintMarginScale * PrintRightMargin)
.TopMargin = App.InchesToPoints(PrintMarginScale * PrintTopMargin)
.BottomMargin = App.InchesToPoints(PrintMarginScale * PrintBottomMargin)
.HeaderMargin = App.InchesToPoints(PrintMarginScale * PrintHeaderMargin)
.FooterMargin = App.InchesToPoints(PrintMarginScale * PrintFooterMargin)
.Orientation = PrintPageOrientation
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlOverThenDown
End With
End Sub
Public Sub GetPageSizes(ExcelApp As Excel.Application, ByRef WS As WorkSheet, ByRef Width As Integer, ByRef Height As Integer)
Dim FullWidth As Double
Dim FullHeight As Double
'Размер листа всегда А4
If (PrintPageOrientation = xlLandscape) Then
FullWidth = 297#
FullHeight = 210#
Else
FullWidth = 210#
FullHeight = 297#
End If
FullWidth = FullWidth - (PrintLeftMargin + PrintRightMargin)
FullHeight = FullHeight - (PrintTopMargin + PrintBottomMargin)
Width = Round(ExcelApp.CentimetersToPoints( _
FullWidth / 10#) / EXCEL_COEF)
Height = Round(ExcelApp.CentimetersToPoints( _
FullHeight / 10#) / EXCEL_COEF)
End Sub
Заранее спасибо
Не ошибается тот, кто ниченго не делает...