|
|
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Вопрос в следующем: необходимо программно узнать ширину текущего листа Excel. Как это можно сделать? Думаю, что есть для этого стандартные функции, но ... я их не нашел. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 15:37:36 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
ширина в VB и в VBA Len("строковое занчение") возвращает 18 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 15:48:36 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
это не то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 15:55:29 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
Да, допишу, чтобы было понятнее что требуется. В общем, лист у меня может быть любым, то есть любого формата (А3, А4, А5, .... любой, который знает Excel). Так вот, мне надо на всю ширину этого листа вывести автофигуру, размеры которой задаются в точках. А посему, мне и понадобилось знать ширину этого самого текущего листа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 15:58:36 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
With ActiveSheet.PageSetup .LeftMargin .RightMargin .TopMargin .BottomMargin .HeaderMargin .FooterMargin .PaperSize = xlPaperA4 это здесь A4 формат End With но по моему, размер листа в Excel-е зависит от пользователя т.е. размер динамичесикий вопрос другой размер листа в зависимости от наполнения листа данными может это нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 16:05:47 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
Нужена именно ширина листа в точках. Ну скока там точек в ширину. Чтобы на всю ширину поместить автофигуру (Прямоугольник). То что можно узнать константу ("... PaperSize = xlPaperA4 это здесь A4 формат ...") - это я знаю. Вот теперь, как узнать, какие параметры у этой константы? Потому как сама константа мне вроде как ничего не дает. Должна быть какая-то стандартная функция для этого, я думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 16:09:52 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
Надо знать или посмотреть размеры всех форматов в Excel и при определении формата листа программно поставить условие для изменении размера автофигуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 16:10:30 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
Можно, конечно, изобразить нечто вроде этого: Dim dPageWidth As Double Dim dPageWidthWithoutMargins As Double dPageWidth = Application.CentimetersToPoints _ (Switch(ActiveSheet.PageSetup.PaperSize = xlPaperA4, 210, _ ActiveSheet.PageSetup.PaperSize = xlPaperA5, 148) / 10) dPageWidthWithoutMargins = _ dPageWidth - (ActiveSheet.PageSetup.LeftMargin + ActiveSheet.PageSetup.RightMargin) но ... тогда остаются еще неудобства. 1. Надо перечислять все возможные константы с указанием их размеров 2. Еще есть константа (не помню точно как называется), когда тип не стандартный, а пользовательский. Тогда с таким подходом вообще ж. получается. Так что надо знать ширину в любом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 17:23:25 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
dendi_2Можно, конечно, изобразить нечто вроде этого: Dim dPageWidth As Double Dim dPageWidthWithoutMargins As Double dPageWidth = Application.CentimetersToPoints _ (Switch(ActiveSheet.PageSetup.PaperSize = xlPaperA4, 210, _ ActiveSheet.PageSetup.PaperSize = xlPaperA5, 148) / 10) dPageWidthWithoutMargins = _ dPageWidth - (ActiveSheet.PageSetup.LeftMargin + ActiveSheet.PageSetup.RightMargin) но ... тогда остаются еще неудобства. 1. Надо перечислять все возможные константы с указанием их размеров 2. Еще есть константа (не помню точно как называется), когда тип не стандартный, а пользовательский. Тогда с таким подходом вообще ж. получается. Так что надо знать ширину в любом случае. что косается не стандартного то об этом не беспокойся я проверил пользователь не может вводить свой тип листа в ворде есть такие параметры .PageWidth = CentimetersToPoints(36) .PageHeight = CentimetersToPoints(25) а в экселе вроде нет и не дает менять програмно без использования констант получается если есть стандарты страницы, и нет пользовательской отсебятины , то можно выводить по условиям и все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2005, 07:13:02 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
))) Сделал с известными параметрами - получается все равно не так. В общем, смысл такой. В экселе, в параметрах страницы стоит "Разместить не более чем на 1 страницу в ширину" (а ширина, скажем, там на два листа, соответсвенно, все сжимается в 2 раза). Поэтому, когда я задаю координаты своей автофигуре - она размещается как раз на страницу. А вот из-за вышеупомянутого параметра страницы уже при отображении, видимо, эксель применяет ко всему выводимому некий множитель (в моем случае это 0,5) и автофигура все равно не выходит на всю ширину (в моем случае это половина страницы). Получается, мне надо знать уже не ширину листа, а координату правой границы выводимого - той границы, которую и определяет ёксель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2005, 11:56:53 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
может и глупо звучит, но есть такой вариант 1) находим крайний правый столбец RightCol 2) Код: plaintext 1. 2. это и должно быть то, что надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2005, 12:31:33 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
тоже самое, но немного по другому 1) найти самый правый столбец 2) объединить ячейки с первой по последний столбец 3) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2005, 12:39:16 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
в последнем посте надо так Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2005, 12:40:54 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
Вариант хороший, но не то. Как найти правую границу? По каким критериям? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2005, 12:45:13 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
вот еще короче Код: plaintext а правая граница - это последний столбец в котором есть данные в результате ваша автофигура будет всегда равна ширене таблицы а последний ЗАПОЛНЕННЫЙ столбец Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2005, 12:58:12 |
|
||
|
Как узнать ширину листа Excel
|
|||
|---|---|---|---|
|
#18+
Нашел другой выход немного. Вроде устраивает такой вариант пока. Отдам тестерам - пусть тестируют. Вот этот вариант 'только тут все равно придется на форматы завязываться Dim dPageWidth As Double ' искомая ширина листа Dim tempWidth As Double ' временная переменная ' в искомую ширину заталкиваем ширину листа А4 в зависимости от ориентации dPageWidth = Application.CentimetersToPoints(Switch _ (curSheet.PageSetup.Orientation = xlLandscape, 29.7, _ curSheet.PageSetup.Orientation = xlPortrait, 21)) ' во временную заталкиваем реальную ширину заполненной области tempWidth = curSheet.Cells.SpecialCells(xlCellTypeLastCell).Left _ + curSheet.Cells.SpecialCells(xlCellTypeLastCell).Width ' если реальная ширина больше ширины листа, то If tempWidth > dPageWidth Then ' если указано "разместить не более чем на одну страницу в ширину" If curSheet.PageSetup.FitToPagesWide And curSheet.PageSetup.Zoom = 1 Then ' то ширина равна временной переменной dPageWidth = tempWidth End If End if ' иначе ширина остается равной ширине листа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2005, 14:33:09 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=33457720&tid=2166629]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
177ms |
get topic data: |
22ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 212ms |
| total: | 502ms |

| 0 / 0 |
