Страницы: 1
RSS
Ширина столбцов
 
Предисловие:  
Есть документ "А", в нем таблица с определенной шапкой и каждому столбцу присвоена определенная ширина столбца  
Создается документ "Б". Данные получаются из внешнего источника данных, тут ширина столбцов устанавливаетмся автоматически - по длине текста.  
Документы (таблицы) идентичные по названию столбцов.  
Вопрос:  
Как на документ "Б" наложить параметры ширины столбцов документа А?  
Т.е. получить данные в таблицу заранее заданого образца.Или как програмно (VBA) задать ширину столбцов, например столбцы А,В,С - 69 пиксилей; Е,Р - 72; а все остальные - 30?
 
можно так вставляем в модуль книги:  
 
Private Sub Workbook_Open()  
With Sheets("Лист1")  
   .Columns("A:A").ColumnWidth = 69  
   .Columns("B:B").ColumnWidth = 69  
 
' .... и так далее  
End With  
End Sub  
 
тогда при открытии данной книги ширина столбцов будет устанавливаться такая как вам нужно.
Редко но метко ...
 
GIG_ant, тут нечто посложнее будет.    
Есть макрос которй с сервера вытаскивает таблички по определенным параметрам.  
Затем каждую табличку сохраняет отдельным файлом "параметр_дата.xls". За один запуск макроса создается 42 таблички. Мне надо ограничение по столбцам прикрутить где-то на этапе формирования таблички.  
еще деталь - стобцов - 86  
строк - от 60 до 12000  
Мне важен критерий для 7-8 стоблбцов разные ширины(120,161,170,195 и т.п). А все остальные одного - 93
 
Или приравнивайте:  
.Columns("A:A").ColumnWidth = Columns("A:A").ColumnWidth
 
{quote}{login=Юрий М}{date=04.01.2011 05:07}{thema=}{post}Или приравнивайте:  
.Columns("A:A").ColumnWidth = Columns("A:A").ColumnWidth{/post}{/quote}  
А вот это попробую завтра, и отпишусь
 
> Мне надо ограничение по столбцам прикрутить где-то на этапе формирования таблички.  
 
Прикрутите примерно это:  
 
'столбцы А,В,С - 69 пиксилей; Е,Р - 72; а все остальные - 30  
Dim coef As Double  
Columns(1).ColumnWidth = 100  
coef = Columns(1).Width / 100  
Columns.ColumnWidth = 30 / coef  
Range("A:C").ColumnWidth = 69 / coef  
Range("E:E,P:P").ColumnWidth = 72 / coef
 
Спасибо, Казанский. это примерно то что хотел.
 
а скопировать именно ширины не пойдет?  
 
   Range("A1:C2").Select  
   Selection.Copy  
   Range("L1").Select  
   Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _  
       SkipBlanks:=False, Transpose:=False
Живи и дай жить..
 
Слэн, может неправильно выразился. Мне надо как в шаблоне. Мне шаблон не нужекн, собственно от него хочу и уйти.  
 
2Казанский, всё суперски работает, только тот результат который хотел получить, получаю при "Columns(1).ColumnWidth = 140"  
Можете в 2-3-х словах пояснить код, чтоб до конца разобраться что-к-чему.  
 
Dim coef As Double  
Columns(1).ColumnWidth = 140  
coef = Columns(1).Width / 100  
Columns.ColumnWidth = 30 / coef  
Range("A:BW").ColumnWidth = 96 / coef  
Range("BX:BX").ColumnWidth = 151 / coef  
Range("BY:CF").ColumnWidth = 94 / coef
 
{quote}{login=Cross}{date=05.01.2011 03:51}{thema=}{post}Слэн, может неправильно выразился. Мне надо как в шаблоне. Мне шаблон не нужекн, собственно от него хочу и уйти.  
 
2Казанский, всё суперски работает, только тот результат который хотел получить, получаю при "Columns(1).ColumnWidth = 140"  
Можете в 2-3-х словах пояснить код, чтоб до конца разобраться что-к-чему.  
 
Dim coef As Double  
Columns(1).ColumnWidth = 140 ' вот это незнаю что  
coef = Columns(1).Width / 100 ' это я так понимаю вводится коэфициент    
Columns.ColumnWidth = 30 / coef     ' а это что?  
Range("A:BW").ColumnWidth = 96 / coef   'мне нужна ширина в 96 пикселей  
Range("BX:BX").ColumnWidth = 151 / coef  'мне нужна ширина в 151 пиксель  
Range("BY:CF").ColumnWidth = 94 / coef 'мне нужна ширина в 94 пикселя{/post}{/quote}
 
Дело в том, что нельзя задать ширину столбца непосредственно в поинтах (пиксели не применяются, т.к. связаны еще и с разрешением монитора), свойство Width столбца - только для чтения.  
Ширина столбца задается свойством ColumnWidth в "попугаях" - прочитайте справку по этому свойству.  
Поэтому я сначала определяю размер попугая в поинтах: задаю ширину 1 столбца 100 попугаев и делю ширину в поинтах Width на 100. Это и есть coef.  
Потом, чтобы задать ширину столбца, делю поинты на размер попугая.  
В теории все правильно, но на практике результат получается приблизительный. Поэтому Вам и приходится подбирать число: 140 вместо 100.
 
Примите мои благодарности, Казанский за столь понятное разъяснение
 
{quote}{login=Cross}{date=06.01.2011 09:00}{thema=}{post}Примите мои благодарности, Казанский за столь понятное разъяснение{/post}{/quote}  
Спасибо.
Страницы: 1
Читают тему
Наверх