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

Код: plaintext
ActiveDocument.Shapes.AddTextbox(Orientation, Left, Top, Width, Height, Anchor)
...
Рейтинг: 0 / 0
Создать надпись в рамке
    #33187866
laifik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за подсказку. Попробую.
...
Рейтинг: 0 / 0
Создать надпись в рамке
    #33189462
laifik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уже второй день ищу в интернете зацепки, "пытаю" справку Билдера , но не выходят свойства:
1) Задать текст в надписи
2) Рамку сделать невидимой
3) Задать имя шрифта и его размер.
Как это должно быть правильно? Попробую переделать на Си. По своему сообщению все отработала.
...
Рейтинг: 0 / 0
Создать надпись в рамке
    #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
Создать надпись в рамке
    #33191084
laifik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Все это успешно перевела на Си.
Вот только теперь незадача. У нас в конторе сложные шаблоны в Ворде. В шапке располагается код номера документа. Листы горизонтальные. Место, где находится код номера документа попадает в поле нижнего колонтитула. И добавляя последующие листы номер прописывается на всех листах.
При открытии этого шаблона программно меняю код на текущий номер. Для этого активизирую нижний колонтитул и методом "Поиск-Замена" прописываю действующий номер.
В конце документа добавляется лист с альбомной ориентацией. Но расположение рамок и шапок остается прежним. Номер документа теперь находится вне нижнего колонтитула. И программно до него не добраться. Поиск не работает. Я решила программно вставить объект "надпись" с кодом номера. Если вставлять просто надпись, то при добавлении последующих листов объект "надпись" не размножается. Если сделать активным колонтитул, надпись добавить можно, и она как-то связана с колонтитулом. Поэтому в последующем размножается.
А вот программно это не получается. Объект "Надпись" создается только при выключенном колонтитуле. А при включенном все отрабатывает, но надписи нет и ошибки тоже. Расположение объекта я тоже учла.
Есть какая-то тонкость, о которой я не знаю. Не поможите?
...
Рейтинг: 0 / 0
Создать надпись в рамке
    #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
Создать надпись в рамке
    #33192586
laifik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я смогла перевести этот код. Он работает. Но "Надпись" все равно создается вне колонтитула. Нет привязки к нему. Какое действие выполняет?
автор Set hf = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary)

'hf.Range.Text = "Footer text"

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

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

Может это особенность структуры вашего документа.
...
Рейтинг: 0 / 0
Создать надпись в рамке
    #33193530
laifik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скорее всего. Я ведь стала проверять работу макроса. Смотрю, он не работает. Стала искать варианты. Включила колонтитул и все заработало. А дальше - дело техники.
К сожалению, с языком VBA знакома только через макросы. И если в момент его создания кнопки какие-то неактивны, то не знаю, что делать. Теперь понятно, что все равно все в Ворде можно запрограммировать.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Создать надпись в рамке
    #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
Создать надпись в рамке
    #36644452
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Up
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Создать надпись в рамке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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