Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Создать надпись в рамке / 13 сообщений из 13, страница 1 из 1
27.07.2005, 16:52
    #33187520
laifik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать надпись в рамке
Мне нужно на Билдере запрограммировать созданиеи надписи в рамке на листе документа Ворд.
Думала, сначала создам макрос, а затем код переведу. Не тут-то было. При работе макроса кнопки "Вставить"->"Надпись" не работают.
Можно ли надпись создать программно? Мне нужно ее расположить сбоку в вертикальном тексте. Поэтому простой вставкой слова не обойтись.
...
Рейтинг: 0 / 0
27.07.2005, 17:06
    #33187563
Создать надпись в рамке
Да вроде нормально макрос пишется.

Код: plaintext
ActiveDocument.Shapes.AddTextbox(Orientation, Left, Top, Width, Height, Anchor)
...
Рейтинг: 0 / 0
27.07.2005, 19:39
    #33187866
laifik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать надпись в рамке
Спасибо за подсказку. Попробую.
...
Рейтинг: 0 / 0
28.07.2005, 14:19
    #33189462
laifik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать надпись в рамке
Уже второй день ищу в интернете зацепки, "пытаю" справку Билдера , но не выходят свойства:
1) Задать текст в надписи
2) Рамку сделать невидимой
3) Задать имя шрифта и его размер.
Как это должно быть правильно? Попробую переделать на Си. По своему сообщению все отработала.
...
Рейтинг: 0 / 0
29.07.2005, 08:52
    #33190663
Создать надпись в рамке
laifik1) Задать текст в надписи
2) Рамку сделать невидимой
3) Задать имя шрифта и его размер.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    Dim sh As Shape
    Dim tf As TextFrame
    
    Set sh = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, _
       250 ,  150 ,  100 #,  50 #)
        
    Set tf = sh.TextFrame
    
        With tf.TextRange.Font
            .Bold = True
            .Name = "Arial"
            .Size =  14 
        End With
        
        With tf.TextRange
            .Text = "Тест"
            .ParagraphFormat.Alignment = wdAlignParagraphCenter
        End With
    
    sh.Line.Visible = msoFalse
...
Рейтинг: 0 / 0
29.07.2005, 11:14
    #33191084
laifik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать надпись в рамке
Спасибо. Все это успешно перевела на Си.
Вот только теперь незадача. У нас в конторе сложные шаблоны в Ворде. В шапке располагается код номера документа. Листы горизонтальные. Место, где находится код номера документа попадает в поле нижнего колонтитула. И добавляя последующие листы номер прописывается на всех листах.
При открытии этого шаблона программно меняю код на текущий номер. Для этого активизирую нижний колонтитул и методом "Поиск-Замена" прописываю действующий номер.
В конце документа добавляется лист с альбомной ориентацией. Но расположение рамок и шапок остается прежним. Номер документа теперь находится вне нижнего колонтитула. И программно до него не добраться. Поиск не работает. Я решила программно вставить объект "надпись" с кодом номера. Если вставлять просто надпись, то при добавлении последующих листов объект "надпись" не размножается. Если сделать активным колонтитул, надпись добавить можно, и она как-то связана с колонтитулом. Поэтому в последующем размножается.
А вот программно это не получается. Объект "Надпись" создается только при выключенном колонтитуле. А при включенном все отрабатывает, но надписи нет и ошибки тоже. Расположение объекта я тоже учла.
Есть какая-то тонкость, о которой я не знаю. Не поможите?
...
Рейтинг: 0 / 0
29.07.2005, 11:57
    #33191284
Создать надпись в рамке
Попробуй так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    Dim hf As HeaderFooter
    Dim sh As Shape
    Dim tf As TextFrame
    
    Set hf = ActiveDocument.Sections( 1 ).Footers(wdHeaderFooterPrimary)
    
    'hf.Range.Text = "Footer text"
    
    Set sh = hf.Shapes.AddTextbox(msoTextOrientationHorizontal, _
       430 ,  780 ,  100 #,  50 #)
        
    Set tf = sh.TextFrame
    
        With tf.TextRange
            .Text = "Тест"
            .ParagraphFormat.Alignment = wdAlignParagraphCenter
            With .Font
                .Bold = True
                .Name = "Arial"
                .Size =  14 
            End With
        End With
        
    sh.Line.Visible = msoFalse
...
Рейтинг: 0 / 0
29.07.2005, 20:15
    #33192586
laifik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать надпись в рамке
Я смогла перевести этот код. Он работает. Но "Надпись" все равно создается вне колонтитула. Нет привязки к нему. Какое действие выполняет?
автор Set hf = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary)

'hf.Range.Text = "Footer text"

Вроде какой-то другой курсор. Но объект создается при активном тексте документа. Может колонтитул нужно сначала привести в активность?
...
Рейтинг: 0 / 0
31.07.2005, 14:02
    #33193099
laifik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать надпись в рамке
Пользователь 2, огромное спасибо за код. У меня все получилось.
Но я оказалась права: сначала нужно активизировать колонтитулы, перейти на нижний, а затем отрабатывать код макроса.
...
Рейтинг: 0 / 0
01.08.2005, 08:45
    #33193482
Создать надпись в рамке
Рад, что получилочь.

Но у меня без активации колонтитула надпись замечательно добавляется.

Может это особенность структуры вашего документа.
...
Рейтинг: 0 / 0
01.08.2005, 09:34
    #33193530
laifik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать надпись в рамке
Скорее всего. Я ведь стала проверять работу макроса. Смотрю, он не работает. Стала искать варианты. Включила колонтитул и все заработало. А дальше - дело техники.
К сожалению, с языком VBA знакома только через макросы. И если в момент его создания кнопки какие-то неактивны, то не знаю, что делать. Теперь понятно, что все равно все в Ворде можно запрограммировать.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
23.05.2010, 04:14
    #36643619
Nebo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать надпись в рамке
Из справки:

Код: plaintext
expression.AddTextbox(Orientation, Left, Top, Width, Height)


Left Required Single. The position (in points) of the upper-left corner of the text box relative to the upper-left corner of the document.

Top Required Single. The position (in points) of the upper-left corner of the text box relative to the top of the document.


Формирую список данных. В конце списка хочу создать рамку с текстом.

Вопрос: А как в качестве значений Left, Top подставить "координаты" ячеек?

Например, программно делаю список из 1000 строк и в самом внизу сразу под списком надо построить рамку.
...
Рейтинг: 0 / 0
24.05.2010, 03:48
    #36644452
Nebo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать надпись в рамке
Up
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Создать надпись в рамке / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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