Excel: глюк с шириной столбца
Программа работала уже месяц и все было нормально, последний этап - это копирование данных из таблицы, программный запуск Excel, вставка туда содержимого и дальнейшее форматирование отчета для придания ему благородного вида. И вот сегодня, наблюдаю такую интересную картину, понять которую надеюсь мне сможет помочь уважаемый All. Для подбора ширины столбца программно для некоторых столбцов запускатся - автоподбор (xlApp.Selection.Columns.AutoFit), в конце всего действия по форматированию получаются столбцы с шириной немного меньше нужной и при этом в нем показваются только последние символы смещенные влево, т.е.
[11111111111112]
а показывается вот так:
[2 ]
если вручную запустить для столбца автоподбор ширины, то столбец показывается нормально, НО в предварительном просмотре перед печатью, все равно видно только старая картинка с одиноким последним символом. И только вручную подвигав границу столбца добиваемся нормального отображения данных столбца.
Чего решительно понять не могу, так почему, даже если все символы не умещаются в столбце, он показывает только одинокий последний символ, да еще смещенный влево, а справо от него полная пустота. И предварительный просмотр не хочет отображать изменения в подборе ширины, пока вручную не установишь границу столбца. Что это? глюк ил недокументированная особенность?
For i = 1 To 10
With ActiveWorkbook.ActiveSheet
.Cells(i, 1).Value = 9999999# * 1000 ^ i
.Cells(i, 1).NumberFormat = "0"
.Cells(i, 1).Columns.AutoFit
End With
Next i
End Sub
...все работает нормально...
...попробую в ВБ...
Selection, ActiveSheet, ActiveWorkBook и т.п.
...мне кожется это добавляет вариантов, при которых возможны глюки...
...ссылаюсь только точно, как в коде (см. выше)
.Cells(i, 1).NumberFormat = "0"
.Cells(i, 1).Columns.AutoFit
попробую ща локализовать глюк, опеределить после каких конкретно действий начинается такая белеберда, потом уже помучаем найденную сбойную строку, можно будет, как предлагает XtreamAll, и попробовать указывать явно диапазоны.... вообщем пошел выгонять человека из-за компа и пытать его глюк ;)
от глюка удалось избавиться задавая принудительно ширину столбцов, причем обязательно с запасом. Т.е. автоподбор ширины ставит например 16 и при этом вся строка умещается в ячейке, НО в предварительном просмотре она уже не умещается (и как следствие показывается токо последний символ строки)
Т.е. при предварительном просмотре текст в ячейке занимает немного больше места, чем в просто в ячейке в окне Excel.
C чем это связано не понял. Думаю виноваты настройки-дрова принтера и их интерпретация Excel'ем
Ну а
Да нет, это все работает, проблема вообще не с VBA. Просто прикол в том при предварительном просмотре строка не умещается когда в при нормальном просмотре в ячейке все путем. Приходится раздвигать столбец пошире, видно справа пустое место уже даже на еще один символ, а впредварительном просмотре видим, что границы подходят впритык. Вообщем, аномалия.
Я на работе сталкивался с тем, что то, что в просмотре отображается некорректно, печатается нормально...
А ты не пробовал печатать, не обращая внимания на предварительный просмотр???
Я на работе сталкивался с тем, что то, что в просмотре отображается некорректно, печатается нормально...
Кстати нет, не пробовал. Я все больше сталкивался с другим, когда все выглядит нормально а печатается с каким-нибудь приколом.
...чего то мне не верится, что драйвер принтера каким то образом урезает именно ячейки...
Попробуй...
...чего то мне не верится, что драйвер принтера каким то образом урезает именно ячейки...
Я, конечно, всё очень бегло просмотрел, но, насколько понял, Ёксельный лист Вы форматируете при помощи макроса. А вызываете его из VB, т.е. внешней проги. Крнечно, могёт быть, вопрос не по теме, но почему бы Вам не обрабатывать всё это из внешнего приложения? По крайней мере, проще будет... Хотя, может, я и не прав...
Попробуй...
...чего то мне не верится, что драйвер принтера каким то образом урезает именно ячейки...
Не, не хочет, как показывает в предварительном просмотре, собака, так и печатает. Может глюк еще просходит вот почему: в параметрах страницы стоит - разместить на 1 стр. в ширину и 100 в длинну - т.е. он еще перед печатью занимается маштабированием таблицы, при этом он конечно должен обращать внимание на шрифт, он же не может просто растянуть таблицу по ширине по самые границы листа а по вертикали оставить его как есть, тоды буквы будут непропорциональные, т.е. он подбирает общий маштаб для всей таблицы, чтобы все помещалось и этот маштаб соответственно действует сразу и по вертикали и по горизонтали, чтобы было все пропорционально. Может при этом действии и просходит небольшие подвижки с буквами внутри ячеек..
...масштабирую листы и т.д.
...но с таким, ежели честно, никогда не сталкивалсяP(
...даже не знаю чего еще предположить:{
...масштабирую листы и т.д.
...но с таким, ежели честно, никогда не сталкивалсяP(
...даже не знаю чего еще предположить:{
...а перед строкой там ничего нету???
...ну пробелы или Tab???
Я по работе частенько печатаю из Ёкселя...
...масштабирую листы и т.д.
...но с таким, ежели честно, никогда не сталкивалсяP(
...даже не знаю чего еще предположить:{
...а перед строкой там ничего нету???
...ну пробелы или Tab???
Проверил через Asc? вроде все нормально, ничего лишнего.
Скопировал этот файл на разные компы, там такая же фигня, вот выкладываю здесь, гляньте на столбцы 1,2,3 в предварительном просмотре перед печатью, как у Вас отражается. Посмотрите и напишите, что у Вас, интересно сравнить.
Никто не глянул на файлик, а???
Я качнул, но пока не успеваю посмотреть. Боюсь, и завтра не успею - пошёл вал дел:{
Я качнул, но пока не успеваю посмотреть. Боюсь, и завтра не успею - пошёл вал дел:{
Ок, мож кто еще глянет :P
Ок, мож кто еще глянет :P
Глянул...:o
У меня то же, что ты описал:
В ячейках - все Ок, а в предварительном просмотре - только первые цыфры...
...щас гляну, може найду с чем это связано...
...наверняка какие-то настройки...
...на всяк случай: какой у тебя принтер???
у меня - Canon LBP 810
причину так и не нашел, но нашел как ее можно устранить...
...выделил твои данные и сделал им автоформат...
...после этого все стало норм. отображаться и печататься...
...следовательно чего то там с форматами не то;)
причину так и не нашел, но нашел как ее можно устранить...
...выделил твои данные и сделал им автоформат...
...после этого все стало норм. отображаться и печататься...
...следовательно чего то там с форматами не то;)
Глянул снова...
причину так и не нашел, но нашел как ее можно устранить...
...выделил твои данные и сделал им автоформат...
...после этого все стало норм. отображаться и печататься...
...следовательно чего то там с форматами не то;)
Можно даже не используя автоформат, достаточно просто вручную раздвинуть побольше границу - скрадывать сбоку расстояние конечно же будет, зато все умещается и поэтому показывается все, а не токо последняя цифра.
Правда с автоформатом есть другая интересная штука: если после применения автоформата взять кисточку (формат по образцу) и скопировать формат с другого плохого столбца обратно на исправленный автоформатом столбец, то он уже будет вести себя немного по другому, чем его автоформатированные ранее братья. Теперь после автоподбора ширины он в предварительном просмотре тоже конечно уменьшает ширину ячейки, но елси раньше он показывал токо последний символ смещенный влево (что было весьма странно), то теперь просто переносит последний не умещающийся символ на вторую строку и пытатется показать в ячейке сразу две строки - вообщем его обычное поведение когда не умещается текст.
Правда загадка остается загадкой.
Там имеются такие проблемы: шрифт Arial в компутере и шрифт Arial в принтере имеют разную ширину. Я такие глюки встречал. Если ты раздвинешь пошире СТРОКУ, и то, что получится поглядишь в предвосмотре, ты увидишь этот процесс наглядно. Видимо, придётся тебе делать AutoFit, а потом прибавлять к ширине каждой колонки что-то пропорциональное количеству символов. Или попробовать другие шрифты (например с Таймс Нью Роман у меня всё корректно работает).
А ещё для меня загадка, почему для этих ячеек у меня не запускается окно формата ячейки (Ктрл+1)...
Покрутил я твой файл, Серёж.
Там имеются такие проблемы: шрифт Arial в компутере и шрифт Arial в принтере имеют разную ширину. Я такие глюки встречал. Если ты раздвинешь пошире СТРОКУ, и то, что получится поглядишь в предвосмотре, ты увидишь этот процесс наглядно. Видимо, придётся тебе делать AutoFit, а потом прибавлять к ширине каждой колонки что-то пропорциональное количеству символов. Или попробовать другие шрифты (например с Таймс Нью Роман у меня всё корректно работает).
А ещё для меня загадка, почему для этих ячеек у меня не запускается окно формата ячейки (Ктрл+1)...
Я тут создал на своем компе новый файл - все ок. Стал сравнивать свойства ActiveSheet.PageSetup один к одному (ну почти, там токо Zoom=False, а у меня =100, но это ничего не изменило ) - тут тупик.
На счет твоего предложение - все очень похоже, токо например с Таймс Нью Роман выходит примерно такая же фигня, а гораздо показательнее это менять размер шрифта, тогда все действительно входит в норму, ну или почти, помойму при Таймс Нью Роман 8, даже наблюдается обратный эффект, в окне впритык граница, в предварительном просмотре лишняя пустота справа появляется.
Мдаа, СтРАННЫЙ какой-то файл... т.е. дело даже не в нем, а копии программы Excel, который его создал. Как рассказывает пользователь, глюки начались с того, что в этом Excel'е открыли один пришедший xls файл для вычислений и в Excel'е сразу отключилось - автоматический пересчет (чем поверг пользователя в долгие часы раздумий: почему это растянутая на весь столбец формула не вычисляет значения, а показывает токо результат первой ячейки). Ну вот, а потом это Excel и стал рожать вот такие вот файлы. Моя-то прога из Access токо открывает Excel и в нем создает новый файл, соотв. со всеми умолч. настройками этого Excel...
Вообщем, надоело с ним бороться, файл сохраню как редкий экземпляр глюка, а Excel думаю сотрем и поставим заново - посмотрим что из этого выйдет.
Мдаа, СтРАННЫЙ какой-то файл... т.е. дело даже не в нем, а копии программы Excel, который его создал. Как рассказывает пользователь, глюки начались с того, что в этом Excel'е открыли один пришедший xls файл для вычислений и в Excel'е сразу отключилось - автоматический пересчет (чем поверг пользователя в долгие часы раздумий: почему это растянутая на весь столбец формула не вычисляет значения, а показывает токо результат первой ячейки). Ну вот, а потом это Excel и стал рожать вот такие вот файлы.
ТАК ТЫ НАМ КОМПЫ ЗАВИРУСОВАЛ??? :devil: :devil: :devil:
ТАК ТЫ НАМ КОМПЫ ЗАВИРУСОВАЛ??? :devil: :devil: :devil:
:D ага, найдена новая уязвимость в Excel
ну а если серьезно, то просто в файле где-то хранятся неправильно заданные параметры формата (хрен знает чего), а то копия Excel научилась рожать такие файлы... но вопросов конечно больше чем ответов X)-