Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2009, 21:54   #1
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию Прграммно создать колонтитул

Доброй ночи.Возникла необходимость программно создать
документ Word .Не знаю как создать и заполнить тектом
колонтитул
Документ создаю без проблем
Код:
   word = New Microsoft.Office.Interop.Word.Document
  Dim oPara1 As Microsoft.Office.Interop.Word.Paragraph

 oPara1 = word.Content.Paragraphs.Add
            oPara1.Range.Text = "Мой текст"
            oPara1.Range.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdBlue
            oPara1.Range.Font.Size = 12
            oPara1.Range.Font.Name = "Arial"
            oPara1.Range.Font.Bold = True
            oPara1.Format.SpaceAfter = 4 
            oPara1.Range.InsertParagraphAfter()
По библиотеке вижу.что AttachedTemplate объект,а как создать не знаю
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 02.10.2009, 01:17   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

О, VB.Net! Его здесь еще не было.
Вот коротенький пример для VB.Net
Код:
Imports Microsoft.Office.Interop.Word
Public Class Form1
  Dim wdDoc As New Document
  Dim oPara1 As Paragraph
  'Объект для работы с нижним или верхним колонтитулом
  Dim oHeadFoot As HeaderFooter

  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    wdDoc.Application.Visible = True
    oPara1 = wdDoc.Paragraphs.Add
    With oPara1
      With .Range
        'Использую InsertAfter, а не Text, т.к это предпочтительнее
        .InsertAfter("Мой текст")
        With .Font
          .ColorIndex = WdColorIndex.wdBlue
          .Size = 12
          .Name = "Arial"
          .Bold = True
        End With
        .InsertParagraphAfter()
      End With
      .Format.SpaceAfter = 4
    End With

    'Верхний колонтитул
    oHeadFoot = wdDoc.Sections(1).Headers(WdHeaderFooterIndex.wdHeaderFooterPrimary)
    With oHeadFoot
      With .Range
        .InsertAfter("Мой текст в верхнем колонтитуле")
        With .Font
          .ColorIndex = WdColorIndex.wdDarkRed
          .Size = 10
          .Name = "Times New Roman"
          .Italic = True
        End With
        .InsertParagraphAfter()
      End With
    End With

    'Нижний колонтитул
    oHeadFoot = wdDoc.Sections(1).Footers(WdHeaderFooterIndex.wdHeaderFooterPrimary)
    With oHeadFoot
      With .Range
        .InsertAfter("Мой текст в нижнем колонтитуле")
        With .Font
          .ColorIndex = WdColorIndex.wdDarkRed
          .Size = 10
          .Name = "Times New Roman"
          .Italic = True
        End With
        .InsertParagraphAfter()
      End With
    End With
  End Sub
End Class
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 02.10.2009 в 01:23.
viter.alex вне форума Ответить с цитированием
Старый 02.10.2009, 01:53   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

viter.alexw

Благодарю Вас

Анализируя Ваши работы на форуме я практически нашел ,что

Надо идти таким путем.
Document.Sections.Add()
Еще раз Спасибо
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 02.10.2009, 02:04   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

А зачем добавлять раздел? Вы уверены, что вам это нужно? Один раздел есть в документе всегда, как и один абзац.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 02.10.2009, 02:37   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Это были пробы.Все по Вашему коду работает.
С Вордом только сегодня начал заниматся,судьба заставила.
сложная обратотка данных.вывод в Ворд
Еще вопрос,просто не думал,что первый быстро решится,номер страницы как вывести.Подскажите пожалуйста в верхний
колонтитул
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 02.10.2009, 03:24   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Можно так:
Код:
Document.Sections(1).Headers(wdHeaderFooterPrimary).PageNumbers.Add WdPageNumberAlignment.wdAlignPageNumberLeft, True
А можно так, немного сложнее:
Код:
Sub AddPageNumWithField()
  Dim oRng As Range
  Set oRng = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
  oRng.Fields.Add oRng, wdFieldPage, , True
  oRng.Paragraphs(1).Alignment = wdAlignParagraphRight
End Sub
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 02.10.2009, 10:52   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Спасибо огромное.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 02.10.2009, 12:49   #8
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
По умолчанию

А зачем такие сложности, никак не пойму?

Public Sub титулы()
With ActiveDocument.Sections(1)
.Headers(wdHeaderFooterPrimary).Ran ge.Text = "Верхний текст"
.Footers(wdHeaderFooterPrimary).Ran ge.Text = "Нижний текст"
End With

End Sub

Или, чуть сложнее, с форматированием и датой:

Sub RKolon()

ActiveDocument.Sections(1).Footers( wdHeaderFooterPrimary).Range _
.InsertDateTime DateTimeFormat:="d MMMM yyyy", _
InsertAsField:=True
strstr = ActiveDocument.Sections(1).Footers( wdHeaderFooterPrimary).Range.Text
strstr = Left(strstr, Len(strstr) - 1)


With ActiveDocument.Sections(1)

.Headers(wdHeaderFooterPrimary).Ran ge.Text = "Верхний текст"
.Headers(wdHeaderFooterPrimary).Ran ge.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Footers(wdHeaderFooterPrimary).Ran ge.Text = "Нижний текст""" & Chr(13) & strstr
.Footers(wdHeaderFooterPrimary).Ran ge.ParagraphFormat.Alignment = wdAlignParagraphCenter

End With

End Sub
garik64 вне форума Ответить с цитированием
Старый 02.10.2009, 13:01   #9
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Человек работает в Microsoft Visual Studio 2008, поэтому ему нужен доступ к документу через COM-сервер
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 27.02.2010, 13:17   #10
ownz
Новичок
Джуниор
 
Регистрация: 27.02.2010
Сообщений: 1
По умолчанию

А если в дельнейшем понадобиться программно изменить любую строчку в колонтитуле, то как это сделать? через .find в колонтитуле не то чтобы не заменяет, а даже не ищет... кстати, в колонтитуле так же присутствуют и таблицы. были попытки даже через поиск отдельных ячеек таблицы (.tables(1).cells(x,y).range.find). может кто знает?
з.ы. спасио заранее кто задумался хотя бы)
ownz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
значение TextBox в колонтитул segail Microsoft Office Excel 3 15.08.2009 21:58
Вставка рисунка в колонтитул - проблема цветокоррекции Margot_666 Microsoft Office Word 1 30.06.2009 19:06
Создать КС e999 Microsoft Office Excel 2 12.12.2008 17:14
добавить колонтитул перед печатью elnurrr Microsoft Office Word 2 23.12.2007 17:34
Колонтитул, или надпись - поместить только на первую страницу Vasuha Microsoft Office Excel 2 28.11.2007 16:23