powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как узнать ширину листа Excel
17 сообщений из 17, страница 1 из 1
Как узнать ширину листа Excel
    #33457720
dendi_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Вопрос в следующем: необходимо программно узнать ширину текущего листа Excel. Как это можно сделать? Думаю, что есть для этого стандартные функции, но ... я их не нашел.
Спасибо.
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33457749
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ширина в VB и в VBA
Len("строковое занчение")
возвращает 18
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33457768
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это не то
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33457775
dendi_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, допишу, чтобы было понятнее что требуется. В общем, лист у меня может быть любым, то есть любого формата (А3, А4, А5, .... любой, который знает Excel). Так вот, мне надо на всю ширину этого листа вывести автофигуру, размеры которой задаются в точках. А посему, мне и понадобилось знать ширину этого самого текущего листа.
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33457788
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
With ActiveSheet.PageSetup
.LeftMargin
.RightMargin
.TopMargin
.BottomMargin
.HeaderMargin
.FooterMargin
.PaperSize = xlPaperA4 это здесь A4 формат
End With
но по моему, размер листа в Excel-е
зависит от пользователя т.е.
размер динамичесикий
вопрос другой размер листа в зависимости от наполнения листа данными
может это нужно
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33457796
dendi_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужена именно ширина листа в точках. Ну скока там точек в ширину. Чтобы на всю ширину поместить автофигуру (Прямоугольник). То что можно узнать константу ("... PaperSize = xlPaperA4 это здесь A4 формат ...") - это я знаю. Вот теперь, как узнать, какие параметры у этой константы? Потому как сама константа мне вроде как ничего не дает. Должна быть какая-то стандартная функция для этого, я думаю.
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33457797
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо знать или посмотреть
размеры всех форматов в Excel
и при определении формата листа программно
поставить условие для изменении размера автофигуры
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33458021
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. Еще есть константа (не помню точно как называется), когда тип не стандартный, а пользовательский. Тогда с таким подходом вообще ж. получается.
Так что надо знать ширину в любом случае.
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33458511
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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)
а в экселе вроде нет и не дает менять програмно без использования констант

получается если есть стандарты страницы, и нет пользовательской отсебятины , то можно выводить по
условиям и все
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33459064
dendi_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
))) Сделал с известными параметрами - получается все равно не так. В общем, смысл такой. В экселе, в параметрах страницы стоит "Разместить не более чем на 1 страницу в ширину" (а ширина, скажем, там на два листа, соответсвенно, все сжимается в 2 раза). Поэтому, когда я задаю координаты своей автофигуре - она размещается как раз на страницу. А вот из-за вышеупомянутого параметра страницы уже при отображении, видимо, эксель применяет ко всему выводимому некий множитель (в моем случае это 0,5) и автофигура все равно не выходит на всю ширину (в моем случае это половина страницы).
Получается, мне надо знать уже не ширину листа, а координату правой границы выводимого - той границы, которую и определяет ёксель.
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33459182
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может и глупо звучит, но есть такой вариант

1) находим крайний правый столбец RightCol
2)
Код: plaintext
1.
2.
For i= 1  to RightCol
   ItogoWidth = ItogoWidth + Cells( 1 , i).Width
next i

это и должно быть то, что надо
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33459218
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоже самое, но немного по другому

1) найти самый правый столбец
2) объединить ячейки с первой по последний столбец
3)
Код: plaintext
range().CurrentArray.Width
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33459228
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в последнем посте надо так

Код: plaintext
range("ИмяОбласти").CurrentRegion.Width
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33459252
dendi_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вариант хороший, но не то. Как найти правую границу? По каким критериям?
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33459309
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот еще короче

Код: plaintext
range("b1","d1").Width

а правая граница - это последний столбец в котором есть данные
в результате ваша автофигура будет всегда равна ширене таблицы

а последний ЗАПОЛНЕННЫЙ столбец

Код: plaintext
Cells( 1 ,  1 ).SpecialCells(xlCellTypeLastCell).Column
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33459623
dendi_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел другой выход немного. Вроде устраивает такой вариант пока. Отдам тестерам - пусть тестируют.
Вот этот вариант

'только тут все равно придется на форматы завязываться

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
' иначе ширина остается равной ширине листа
...
Рейтинг: 0 / 0
Как узнать ширину листа Excel
    #33459628
dendi_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо всем, кто принимал участие и помог мне.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как узнать ширину листа Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]