Author |
Topic |
|
gromozeka
11 Posts |
Posted - 11/07/2005 : 14:10:37
|
День добрый... Надо узнать размер строки (длину) в миллиметрах или в чем нить еще, подскажите пожалуйста... делаю, как в FAQ написано: Sub Text_width() Dim shpObj As Visio.Shape Set pagsObj = ThisDocument.Pages Set pagObj = pagsObj.Item(1) Set selectObj = ActiveWindow.Selection Set shpObj = ActiveWindow.Selection.Item(1) shpObj.Text = "Text here" 'пишем текст в фигуру или оставляем shpObj.AddSection visSectionUser 'добавляем раздел shpObj.AddRow visSectionUser, visRowUser + 0, 0 'добавляем строку Set celObj = shpObj.Cells("User.Row_1") 'назначаем ячейку celObj.Formula = "TEXTWIDTH(TheText)" 'забиваем формулу TextWTH = celObj.Result(visMillimeters) 'забираем результат MsgBox TextWTH, , "Text width" 'показываем результат End Sub
но на AddSection вылетает исключение,, если сначала секцию удалять , а потом добавлять (или просто не добавлять секцию, я так понимаю она уже есть), то проходим дальше... Но в строке Set celObj = shpObj.Cells("User.Row_1") -unexpected END of file... Что можно сделать, что я не правильно делаю, подскажите пожалуйста?!
спасибо |
|
brace
Russia
358 Posts |
Posted - 11/07/2005 : 14:34:15
|
размер строки это же ширина прямоугольника в котором текст записан. А ширину и высоту любого шейпа узнаем через Size & Position window |
|
|
gromozeka
11 Posts |
Posted - 11/07/2005 : 15:05:57
|
у меня текст в самом шейпе,, как его длину определить!? |
|
|
gromozeka
11 Posts |
Posted - 11/07/2005 : 15:07:05
|
извиняюсь, я не уточнил в вопросе это...) |
|
|
brace
Russia
358 Posts |
Posted - 11/07/2005 : 17:09:49
|
обычно если текст внутри шейпа то по ширине он не вылезает за границы шейпа а уж ширину шепа см. Size & Position window. |
|
|
gromozeka
11 Posts |
Posted - 11/07/2005 : 17:27:11
|
мне нужно в зависимости от размера текста , создавать шейп... т.е. если строка длинная, то я определяю её размеры,и создаю такой шейп, чтобы текст поместился в одну строку в шейпе, перенос мне не нужен.... Как это сделать? В шейп может запихнуться сколь угодно длинную строку, мне нужно посчитать размер строки, а потом шейп растянуть, чтоб строка влезла |
|
|
Julia
Russia
23 Posts |
Posted - 11/08/2005 : 11:40:36
|
quote: Originally posted by gromozeka
мне нужно в зависимости от размера текста , создавать шейп... т.е. если строка длинная, то я определяю её размеры,и создаю такой шейп, чтобы текст поместился в одну строку в шейпе, перенос мне не нужен.... Как это сделать? В шейп может запихнуться сколь угодно длинную строку, мне нужно посчитать размер строки, а потом шейп растянуть, чтоб строка влезла
в шейп-листе это выглядит так в секции преобразовании формы в ячейке WIDTH: TEXTWIDTH(TheText) |
|
|
Tumanov
Russia
1198 Posts |
Posted - 11/08/2005 : 19:33:02
|
На свежем шейпе макрос работает без вопросов. Ошибки начинаются, когда секция или строка уже существуют. Нужно учиться проверять наличие секций и строк. Это делается через свойства SectionExists и RowExists. А второй вариант, как подсказывает Julia, - установить width=GUARD(TEXTWIDTH(TheText)) и все будет происходить само собой без применения макросов. |
|
|
|
Topic |
|
|
|