Страницы: 1
RSS
Вписать таблицу по ширине и высоте на одну страницу
 
Друзья, очередной раз мне больше не к кому обратиться.
Имеем: табличку в которой динамическое количество строк и столбцов с мин и макс размерами, остальные скрываем
Что хотим: изменением ширины столбцов и высоты строк подогнать не скрытый диапазон под лист А4
дома я работаю на 2013 и все что хотел - сделал, но на работе попробовал на 2007-ом, там не работает как мне нужно, конкретно: высота строк слишком большая
сделал пример на основании своего рабочего, в коде конкретно указал проблемные участки

Вопросы которые я не могу понять:
1. ширина_столбца = ширина_листа_в_пикселях / кол_столбцов *коэфф, где
коэфф = [a1].columnwidth / [a1].width
при этом ширина рабочей области упорно вылазит за пределы листа
2. на 2007 при построчном проходе по коду все делается правильно, а при нормальной работе - как реакция на собитие, то нет (высота строк не правильная)
чую корень зла скрыт в PageSetup  и  Application.ScreenUpdating
Помогли? отпишись, а то мы же волнуемся )))
 
Не понял зачем заниматься подгонкой ширины/высоты? Если для печати, то просто скройте ненужные строки/столбцы, а потом в параметрах страницы установите печатать на 1 стр. в ширину и 1 стр.в высоту. Вручную или кодом:
Код
With ActiveSheet.PageSetup
        .FitToPagesWide = 1
        .FitToPagesTall = 1
End With
Иначе у вас может получиться размер шрифта будет больше высоты строки.
Не стреляйте в тапера - он играет как может.
 
Ts.Soft, так лист поместиться, да, но либо строк будет больше, либо столбцов, мне нужно растянуть все нужные строки и столбцы до краев листа, в своем документе я в одном из вариантов я растягиваю по ширине, а затем подбираю необходимую высоту строк
Помогли? отпишись, а то мы же волнуемся )))
 
Ох, делал я когда-то такое неблагодарное дело как подгонка печати на основании контента в Excel. Тоже сначала грешил на то, что без обновления экрана границы не инициализируются на новые позиции. Однако же нет. Пришлось подключить манипуляции масштабом и перемещением границ разметки печати(что-то вроде Dragoff) вкупе с определением кол-ва печатных страниц и отслеживанием того, чтобы помещались все столбцы при максимально возможном масштабе. Иначе, если масштаб не выставлять, то сдвигалось так, что нифига не видно было на печатных листах.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, ну да, вопрос такой, что поймет только тот, кто сам ни один час на это не убил, честно именно на вас я больше всего расчитывал  :oops:
и с масштабом я столкнулся, когда страница все меньше и меньше (точнее текст) перед началом масштаб в 100 процентов ставлю.......
до ScreenUpdating сам честно догадался, и он мне помог, и я уже обрадовался все реально заработало, НО!! только на 2013 офисе (кстати, кто на нем только, мой код вполне сносный, на 10-ке не проверял), я уже даже не знаю что делать, почему в 2007 не работает, в пошаговом все норм, а так нет и все...... без FitToPagesWide = 1, все работает!!!!! Есть у меня другой вариант, я в цекле уменьшал ширину, пока не пропадает разрыв, но там не точно по границе и время не нравится, намудрил кое-чего и уменьшил до 0,8 сек, но душу такой метод не греет, я ведь планку себе поднял, массивы использую, бредовые мысли сделать анимацию в процессе выполнения макроса уже давно отпали )))))
Помогли? отпишись, а то мы же волнуемся )))
 
и тишина................. неужели ни кто не в курсе? не сталкивался? ...читал? ....слышал? ..... знакомый рассказывал? я старался, пример делал. Что почитать, где такие вещи обсуждают?
Помогли? отпишись, а то мы же волнуемся )))
 
Цитата
guzen_pilot написал:
Что почитать, где такие вещи обсуждают?
Давайте представим, что Вы не одиноки в своей проблеме. Но и не будем забывать, что книг и опусов на тему "как мне было однажды фигово и как я это победил" мало кто пишет, тем более по части Excel, т.к. Ваш случай больше к частному относится, чем к чему-то постоянно проявляющемуся.

По сути в Вашем коде нет ни единого цикла, который бы хоть как-то пытался подогнать область печати под нужные строки и столбцы. Отсюда и проблема. Вы один раз выставляете что-то и надеетесь, что везде сработает на ура.
Я помнится впиливал цикл Do с проверкой масштаба и границ печати, чтобы все максимально отвечала условиям. Попробуйте тоже применить подход подгонки циклами вместо кода "в лоб". В циклах не забудьте про DoEvents - он вполне способен помочь.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
в  цикле вариант у меня есть, он работает и проблем с ним нет (лучше чем сейчас он не сделает), посему в пример не включил
Цитата
guzen_pilot написал:
Есть у меня другой вариант, я в цикле уменьшал ширину, пока не пропадает разрыв, но там не точно по границе и время не нравится, намудрил кое-чего и уменьшил до 0,8 сек, но душу такой метод не греет
мой вопрос: Мы устанавливаем ширину столбиков в "локтях" а измеряем диапазон в "метрах", ок, не проблема, высчитали для одного в "метрах" и умножили на коэффициент для перевода "метров" в "локти", но!!!! результат-то не тот, причем разница существенная, 4-5 столбцов "вылетают" на другой лист, коэффициент у меня правильный, тогда в чем проблема? а решать ее нужно потому, что результат после цикла мне не нравится, а .FitToPWidagese = 1 приносит проблемы в 2007-ом.  чувствую что-то упускаю по незнанию (мысль такая - допустим columnwidth устанавливает не ширину столбца, а только ширину пространства внутри ячейки для текта, пропуская границы между ячейками или минимальный отступ от границы ячейки до текста, пиксель там - пиксель там, вот и набегает....... тонко? да, согласен, но я готов вникнуть, где о таком может быть написано? Вот допустим, когда я ставил масштаб 100%, а он упорно не ставился, потому, что нужно было формат бумаги задать (напр. А4 поставить), тогда только лист переопределяется и масштаб встает - это тоже тонкость, уверен многие также голову ломали, а я на планете решение нашел. Найдем и для столбцов, и выложим, людям нужно, я пока искал столько видел таких же вопросов, точно нужно
Помогли? отпишись, а то мы же волнуемся )))
Страницы: 1
Наверх