powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ширина текста в миллиметрах
19 сообщений из 19, страница 1 из 1
Ширина текста в миллиметрах
    #33999397
alexnap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как узнать ширину текста в миллиметрах? Нужно поместить текст в таблицу. В каждой ячейке должно быть не более одной строки текста. То, что не влезает должно помещаться ниже в другую ячейку. Для этого нужно знать ширину текста с учетом форматирования. Везде искал, не нашел. Интуиция подсказывает, что это можно сделать. Помогите плиз!!!
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34000161
Taranaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это ексель - то в формате ячейки можно тупо указать "переносить по словам" и не париться. Ексель сам все сделает... да и ворд в общем то тоже...
Зачем это все???
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34001645
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) имей ввиду следующее:

Для установке ширины столбца в Excel существует лишь 6 возможных интервалов между целыми значениями:
0.17, 0.33, 0.50, 0.67, 0.83 и 1.00 [1 - это следующее целое] и эти интервалы выражены в точках.
Напр. если попытаться установить (даже кодом) ширину столбца в 12.25 она все равно станет 12.33 :(

- свойство ColumnWidth дает ширину столбца на базе используемого стандартного шрифта
- свойства Width и RowHeight дают ширину и высоту в точках [1/72 дюйма... 72 пикселя на дюйм]
- свойство RowHeight [высота строки] не может превышать 409.5 точек
- Zoom окна влияет на пропорции обоих измерений
- Выходное разрешение принтера может давать пропорции отличные от экранных
- в свойствах экрана (Windows) каждый юзер может установить свои точки на дюйм
- необходимо конвертировать различные единицы измерения

2) Нижеследующий пример пытается сделать из ячейки квадрат со стороной 12 см. По вышеуказанным причинам точность не гарантируется :))


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Sub Квадрат1() 
  Dim Cms As Double, Fx As Double 
  Cms =  12  
  With ActiveCell 
    .ColumnWidth = Cms 
    Fx = .Width / .ColumnWidth 
    .ColumnWidth = Application.CentimetersToPoints(Cms) / Fx 
    Fx = .Width / .ColumnWidth 
    .RowHeight = .ColumnWidth * Fx 
  End With 
End Sub 

др. вариант: 

Sub Квадрат2() 
  Dim Шир As Single, Выс As Single, Fx As Single, Fy As Single 
  Шир =  120  ' <= милиметры 
  Выс =  120  ' <= милиметры 
  Шир = Шир /  10  
  Выс = Выс /  10  
  Fy = Выс / Шир 
  With ActiveCell 
    .ColumnWidth = Шир 
    Fx = .Width / .ColumnWidth 
    .ColumnWidth = Application.CentimetersToPoints(Шир) / Fx 
    Fx = .Width / .ColumnWidth 
    .RowHeight = .ColumnWidth * Fx * Fy 
  End With 
End Sub 

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34001683
alexnap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том то все и дело, что сделать надо для ворда. Программа выводит отчет в Word. Форма отчета строго регламентирована. В том числе строго задана высота строк. Ну и естественно, неэстетично будет смотреться, если в строке таблицы, высотой 8 мм будет 2 и более строк текста. Поэтому я хочу искуственно разрубить текст на нужное число частей и расположить их друг под другом.
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34003313
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот что странно, что 1 см ячейку получаеться нельзя установить? при помощь алгоритма выше.у меня ощущение что он под 10 см заточен.для другого размера другой алгоритм.
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34003349
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
Function CreateWB(Optional strBookName As String = "", _
                  Optional intNumSheets As Integer =  3 )
    Dim intOrigNumSheets As Integer
    Dim wkbNew As Excel.Workbook, ratio As Integer, yside As Double, xside As Double, cm As Double
    Dim xlApp As Excel.Application
    Dim rngCurrentCell As Excel.Range

    Const XL_NOTRUNNING As Long =  429 

    On Error GoTo CreateNew_Err

    Set xlApp = GetObject(, "Excel.Application")

    intOrigNumSheets = xlApp.SheetsInNewWorkbook
    If intOrigNumSheets <> intNumSheets Then
        xlApp.SheetsInNewWorkbook = intNumSheets
    End If
    Set wkbNew = xlApp.Workbooks.add
    If Len(strBookName) =  0  Then strBookName = xlApp.GetSaveAsFilename
    wkbNew.SaveAs strBookName
    xlApp.SheetsInNewWorkbook = intOrigNumSheets

        ratio =  1 
        yside = (xlApp.Worksheets( 1 ).Cells.RowHeight /  2 )
        xside = yside /  10 
        xlApp.Worksheets( 1 ).Cells.ColumnWidth = xside / ratio
        xlApp.Worksheets( 1 ).Cells.RowHeight = yside / ratio
    wkbNew.Save
    xlApp.Quit
    Set xlApp = Nothing

CreateNew_End:
    Exit Function
CreateNew_Err:
    If err = XL_NOTRUNNING Then
        ' Excel is not currently running.
        Set xlApp = New Excel.Application
        Resume Next
    Else
        wkbNew.Close False
        Set wkbNew = Nothing
        xlApp.Quit
        Set xlApp = Nothing
    End If
    Resume CreateNew_End
    Resume
End Function

Вот такой алогоритм создания квадрата, вроде работает. даже распечатыветься квадрат. только я не пойму как привязать к сантиметрам.
У меня этот алгоритм создает на листе бумаги квадрат 3 на 3 мм.
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34003352
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто я решил сначала в пропорциями разобраться. а как сча сюда привязать сантиметры пока не придумал.
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34003365
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запускать можно так
Код: plaintext
?createwb (currentproject.path & "test.xls")
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34003373
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправлено
?createwb(currentproject & "\" & "test.xls")
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34003382
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
)) да что такое.редактирование надо уже сделать давно.

Код: plaintext
?createwb(currentproject.path & "\test.xls")
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34003438
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще то создает только 3 на 3 квадрат)
увеличив шаг, получаем диспропорцию.
yside = (xlApp.Worksheets(1).Cells.RowHeight +20 / 2)
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34004446
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKвот что странно, что 1 см ячейку получаеться нельзя установить? при помощь алгоритма выше.у меня ощущение что он под 10 см заточен.для другого размера другой алгоритм.Привет AlexeiK,

1) У меня работают вполне сносно оба кода. Можно узнать как ты изменил код в попытке получить стороны в 1 см?

2) Пожалуйста, скажи, что ты измерял распечатку, а не изображение на экране !!! Потому что если ты подойдешь к карте и измеришь расстояние от Москвы до Питера, то может оказаться, что там не 600км, а пара см :-) У тебя какое разрешение экрана? В отличие от см , меры физической/абсолютной, точка - мера метафизическая/относительная.

Все это разъяснено в моем посте выше.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34004988
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алгоритм оставил какой есть от тебя.
разрешение 1280x1024 96 dpi (monitor)
потом просто поставил в параметры вместо 120 мм , 10 мм.и запустил.
с параметром 120 мм, я получил на экране при 100% 11 см в высоту и 12 в ширину, а на бумаге тоже самое.
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34004995
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при 1 мм, я просто получаю ошибку я хотел сказать.
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34005248
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKалгоритм оставил какой есть от тебя.
потом просто поставил в параметры вместо 120 мм , 10 мм.и запустил.
с параметром 120 мм, я получил на экране при 100% 11 см в высоту и 12 в ширину, а на бумаге тоже самое.
при 1 мм, я просто получаю ошибку я хотел сказать.

Если не сложно, ты мог бы привести буквально всю процедуру и сказать какая у тебя версия Office?

Спасибо,
KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34005729
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Function textw()
   On Error GoTo textw_Error

Dim Шир As Single, Выс As Single, Fx As Single, Fy As Single
  Шир =  10  ' <= милиметры
  Выс =  10  ' <= милиметры
  Шир = Шир /  10 
  Выс = Выс /  10 
  Fy = Выс / Шир
  With ActiveCell
    .ColumnWidth = Шир
    Fx = .Width / .ColumnWidth
    .ColumnWidth = rng.Application.CentimetersToPoints(Шир) / Fx
    Fx = .Width / .ColumnWidth
    .RowHeight = .ColumnWidth * Fx * Fy
  End With

   On Error GoTo  0 
   Exit Function

textw_Error:
    MsgBox2 "Error " & err.NUMBER & " (" & err.Description & ") in procedure textw of Module ExcelMethods"
    Exit Function

End Function

access 2003 (11.6566.6568) sp2
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34006586
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а да стоит заметить) там употреблено rng
то есть так все выглядит то.
Function textw(rng as excel.range)
On Error GoTo textw_Error

Dim Шир As Single, Выс As Single, Fx As Single, Fy As Single
Шир = 10 ' <= милиметры
Выс = 10 ' <= милиметры
Шир = Шир / 10
Выс = Выс / 10
Fy = Выс / Шир
With ActiveCell
.ColumnWidth = Шир
Fx = .Width / .ColumnWidth
.ColumnWidth = rng.Application.CentimetersToPoints(Шир) / Fx
Fx = .Width / .ColumnWidth
.RowHeight = .ColumnWidth * Fx * Fy
End With

On Error GoTo 0
Exit Function

textw_Error:
MsgBox2 "Error " & err.NUMBER & " (" & err.Description & ") in procedure textw of Module ExcelMethods"
Exit Function

End Function
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34007545
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет AlexeiK,

Несмотря на обилие совершенно непонятных для меня дополнений:

1) не вижу смысла в функции . Обычно их используют для возврата значений, а если нужно передавать параметры, то Sub с параметрами
2) не вижу смысла в параметре rng если все равно используешь ActiveCell
3) не понимаю:
- если запускаешь код из Access , то как срабатывает ActiveCell
- если запускаешь код из Excel , то зачем "as excel.range" и "rng.Application."
4) не знаю что за функция MsgBox2 - у меня она дает ошибку

Несмотря ни на что этот твой код работает корректно в моем Excel (если заменить MsgBox2 на MsgBox ).

версия: Microsoft Office 2003 Pro Enterprise SP2 (11.8033.8036) English US - MUI (все доступные языки)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Ширина текста в миллиметрах
    #34022672
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да все верно)
ошибочно использовал . теперь все ок.спасибо
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ширина текста в миллиметрах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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