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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2008, 15:15   #1
АлёнаP
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 56
Вопрос Footers(wdHeaderFooterPrimary).Rang e.Tables.Add

Создаю таблицу в колонтитуле.
Set oTable = Sec.Footers(wdHeaderFooterPrimary). Range.Tables.Add(myRange, 4, 2, wdAutoFitWindow)
With oTable
.......
.......
End With

Все отлично работает, но возникает ошибка, если в тексте документа, уже есть какая-нибудь таблица.
Кто знает, что делать?
АлёнаP вне форума Ответить с цитированием
Старый 17.12.2008, 16:04   #2
АлёнаP
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 56
По умолчанию

Сообщение "Не удается удалить диапазон".
Пардон, наличие таблиц в тексте, не причина.
АлёнаP вне форума Ответить с цитированием
Старый 17.12.2008, 16:29   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub Макрос3()
    Dim ra As Range, ta As Table
    
    Set ra = ThisDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range
    ra.Delete ' если убрать эту строку, будет появляться ошибка "Не удается удалить диапазон"

    Set ta = ThisDocument.Tables.Add(Range:=ra, NumRows:=2, NumColumns:=3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed)
    With ta
        .Range.Font.Color = wdColorGold
        ' ...
    End With
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 24.03.2009, 17:00   #4
АлёнаP
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 56
По умолчанию

та же ошибка в троке:
Set oTable = Sec.Footers(wdHeaderFooterPrimary). Range.Tables.Add(myRange, 4, 2, wdAutoFitWindow)


'=================================
Set myRange = ActiveDocument.Sections(1).Footers( wdHeaderFooterPrimary).Range
For Each Sec In ActiveDocument.Sections
Set oTable = Sec.Footers(wdHeaderFooterPrimary). Range.Tables.Add(myRange, 4, 2, wdAutoFitWindow)

Sec.Footers(wdHeaderFooterPrimary). Range.Font.Size = 10
With oTable
.Cell(1, 1).Range = a1
.Cell(1, 2).Range = b1
End With
Next Sec
АлёнаP вне форума Ответить с цитированием
Старый 24.03.2009, 21:04   #5
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Конечно, ошибка. Алёна, попробуй словами описать, что ты делаешь в приведенном коде. Я попробовал, и вот, что получается:
  1. Set myRange = ActiveDocument.Sections(1).Footers( wdHeaderFooterPrimary).Range — в переменную myRange ты запоминаешь диапазон (Range), который ссылается на нижний колонтитул первой страницы первого раздела. Допустим. Здесь никакой ошибки.
  2. For Each Sec In ActiveDocument.Sections — циклом перебираешь все разделы в документе. Согласен.
  3. Set oTable = Sec.Footers(wdHeaderFooterPrimary). Range.Tables.Add(myRange, 4, 2, wdAutoFitWindow) — в нижний колонитул первой страницы данного раздела ты добавляешь таблицу, которую хочешь связать с диапазоном нижнего колонтитула первой страницы первого раздела. It's impossible!
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 27.03.2009, 12:05   #6
АлёнаP
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 56
По умолчанию

Why??? It's impossible???
А как?
АлёнаP вне форума Ответить с цитированием
Старый 27.03.2009, 13:08   #7
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от АлёнаP Посмотреть сообщение
Why??? It's impossible???
А как?
«— Пойдем простым, логическим путем.
— Пойдем вместе!»© «Ирония судьбы»

Если мы хотим вставить таблицу в нижний колонтитул первой страницы каждого раздела, то зачем нам запоминать диапазон нижнего колонтитула первой страницы первого раздела? Не понятно.
Мелкомягкие ребята перемудрили. По идее, если я пишу Range.Tables.Add, то я уже указываю в какой дипазон я добавляю таблицу. Но нет, при добавлении таблицы нужно указывать этот диапазон еще раз. Т.е. в случае с нашими колонтитулами, по идее, должно быть так:
Код:
Set oTable = Sec.Footers(wdHeaderFooterPrimary).Range.Tables.Add _
(Sec.Footers(wdHeaderFooterPrimary).Range, 4, 2, wdAutoFitWindow)
А зачем эту таблицу запоминать? Мы с ней еще что-то делать будем?
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 27.03.2009, 13:48   #8
АлёнаP
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 56
По умолчанию

ОООО!!!!!!!!!!!!!!!!! Всё получилось!!!!!!!!!
Спасибо!!!!


Так потом, нужно заполнить ячейки таблицы.
АлёнаP вне форума Ответить с цитированием
Старый 27.03.2009, 15:26   #9
АлёнаP
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 56
По умолчанию

перед

Set oTable = Sec.Footers(wdHeaderFooterPrimary). Range.Tables.Add _
(Sec.Footers(wdHeaderFooterPrimary) .Range, 4, 2, wdAutoFitWindow)

написала:
ActiveDocument.PageSetup.OddAndEven PagesHeaderFooter = True
и здесь указывается, что "Значение лежит вне допустимого диапазона"
АлёнаP вне форума Ответить с цитированием
Старый 27.03.2009, 16:19   #10
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от АлёнаP Посмотреть сообщение
перед

Set oTable = Sec.Footers(wdHeaderFooterPrimary). Range.Tables.Add _
(Sec.Footers(wdHeaderFooterPrimary) .Range, 4, 2, wdAutoFitWindow)

написала:
ActiveDocument.PageSetup.OddAndEven PagesHeaderFooter = True
и здесь указывается, что "Значение лежит вне допустимого диапазона"
Странно. нужно увидеть больше кода, чтобы что-то говорить об ошибке.

Алёна, пользуйтесь тегами [code][/code] для оформления кода программы. Кнопка на панели инструментов.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
куда закачиваются файлы WorkBooks.ADD ? salgir Microsoft Office Excel 8 08.10.2008 21:32
MS Word: Range kate4ka Общие вопросы Delphi 1 19.02.2008 06:14
Chart1.Foot.Text.Add('gsdhfjk'); Небесный Общие вопросы Delphi 7 17.02.2008 15:21
Query1.SQL.Add('.......'); <--- ПОМОГИТЕ !!! SALEM БД в Delphi 3 24.11.2006 11:29