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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2009, 11:25   #1
provodnikam
Пользователь
 
Регистрация: 17.07.2009
Сообщений: 31
Восклицание АВТОМАТИЧЕСКИЕ КОЛОНТИТУЛЫ

Здравствуйте!!!!
Есть некая папка, в которой лежат файлы .doc
необходимо автоматически в каждый из них вставить один и тот же колонтитутл.
Но проблема в том, что их(файлов) БоЛЕЕ 1000!!!
вручную это долго!!!!
Подскажите, программно можно это сделать с помощью макроса!!!!
provodnikam вне форума Ответить с цитированием
Старый 21.11.2009, 17:52   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Можно. Функцией Dir перебирать файлы в каталоге. Вставлять колонтитулы через коллекцию HeadersFooters для каждого раздела в документе. Что не получается?
Я бы и макрос написал, да некогда

Добавлено позже
На скорую руку:
Код:
Sub InsertHeadersFooters()
  On Error Resume Next
  Dim sDirectoryPath As String 'Путь к каталогу с файлами
  Dim sFileName As String 'Имя файла
  Dim oDoc As Document 'текущий документ
  Dim oSec As Section 'Раздел документа
  Dim n As Long 'Счетчик документов
  
  'Диалог выбора папки с файлами
  With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Выберите папку с файлами"
    .ButtonName = "Выбрать"
    .AllowMultiSelect = False
    If .Show Then sDirectoryPath = .SelectedItems(1) Else Exit Sub
  End With
  
  sFileName = Dir(sDirectoryPath & "\*.doc*") 'читаем файлы из папки
  Do While Len(sFileName) > 0 'пока есть имя файла
    'Открываем документ
    Set oDoc = Documents.Open(sDirectoryPath & "\" & sFileName, AddToRecentFiles:=False)
    n = n + 1
    'Перебираем все разделы в документе и задаем текст нижнего и верхнего колонтитулов
    For Each oSec In oDoc.Sections
      oSec.Headers(wdHeaderFooterPrimary).Range.Text = "Верхний колонтитул раздела " & oSec.Index
      oSec.Footers(wdHeaderFooterPrimary).Range.Text = "Нижний колонтитул раздела " & oSec.Index
    Next
    oDoc.Close True 'Закрываем документ
    'Делаем то, что накопилось в системе, чтобы не зависнуть
    DoEvents
    Application.StatusBar = "Обработано " & n & " файлов"
    sFileName = Dir 'Читаем имя следующего файла
  Loop
  'Очищаем мусор
  Set oDoc = Nothing: Set oSec = Nothing: Err.Clear
  'Сообщение о результатах работы
  MsgBox "В каталоге """ & sDirectoryPath & """ обработано " & n & " файлов", vbInformation + vbOKOnly, "Добавление колонтитулов"
End Sub
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 21.11.2009 в 18:13.
viter.alex вне форума Ответить с цитированием
Старый 21.11.2009, 19:27   #3
provodnikam
Пользователь
 
Регистрация: 17.07.2009
Сообщений: 31
Радость

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Можно. Функцией Dir перебирать файлы в каталоге. Вставлять колонтитулы через коллекцию HeadersFooters для каждого раздела в документе. Что не получается?
Я бы и макрос написал, да некогда

Добавлено позже
На скорую руку:
Код:
Sub InsertHeadersFooters()
  On Error Resume Next
  Dim sDirectoryPath As String 'Путь к каталогу с файлами
  Dim sFileName As String 'Имя файла
  Dim oDoc As Document 'текущий документ
  Dim oSec As Section 'Раздел документа
  Dim n As Long 'Счетчик документов
  
  'Диалог выбора папки с файлами
  With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Выберите папку с файлами"
    .ButtonName = "Выбрать"
    .AllowMultiSelect = False
    If .Show Then sDirectoryPath = .SelectedItems(1) Else Exit Sub
  End With
  
  sFileName = Dir(sDirectoryPath & "\*.doc*") 'читаем файлы из папки
  Do While Len(sFileName) > 0 'пока есть имя файла
    'Открываем документ
    Set oDoc = Documents.Open(sDirectoryPath & "\" & sFileName, AddToRecentFiles:=False)
    n = n + 1
    'Перебираем все разделы в документе и задаем текст нижнего и верхнего колонтитулов
    For Each oSec In oDoc.Sections
      oSec.Headers(wdHeaderFooterPrimary).Range.Text = "Верхний колонтитул раздела " & oSec.Index
      oSec.Footers(wdHeaderFooterPrimary).Range.Text = "Нижний колонтитул раздела " & oSec.Index
    Next
    oDoc.Close True 'Закрываем документ
    'Делаем то, что накопилось в системе, чтобы не зависнуть
    DoEvents
    Application.StatusBar = "Обработано " & n & " файлов"
    sFileName = Dir 'Читаем имя следующего файла
  Loop
  'Очищаем мусор
  Set oDoc = Nothing: Set oSec = Nothing: Err.Clear
  'Сообщение о результатах работы
  MsgBox "В каталоге """ & sDirectoryPath & """ обработано " & n & " файлов", vbInformation + vbOKOnly, "Добавление колонтитулов"
End Sub
Спасибо!!!!
Вроде работаеь!!!!!!!!!!
provodnikam вне форума Ответить с цитированием
Старый 22.11.2009, 09:08   #4
provodnikam
Пользователь
 
Регистрация: 17.07.2009
Сообщений: 31
По умолчанию

Единственная проблемма цикл бесконечный почему-то!!!!!!!!((((((((((((((((((((((
provodnikam вне форума Ответить с цитированием
Старый 22.11.2009, 12:48   #5
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цикл не бесконечный. Всё работает. Если файлов много, то вставлять будет долго. Наберись терпения.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 23.11.2009, 13:10   #6
provodnikam
Пользователь
 
Регистрация: 17.07.2009
Сообщений: 31
По умолчанию

А можно ещё спросить:
мне в колонтитуле нужно, что бы содержался текс и ссылка на сайт.
Как ссылочку туду вставить????
Заранее большое спасибо за ответ!!!
provodnikam вне форума Ответить с цитированием
Старый 23.11.2009, 14:10   #7
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Ссылочки вставляются добавлением элементов в коллекцию Hyperlinks
Код:
Sub InsertHeadersFooters()
  On Error Resume Next
  Dim sDirectoryPath As String 'Путь к каталогу с файлами
  Dim sFileName As String 'Имя файла
  Dim oDoc As Document 'текущий документ
  Dim oSec As Section 'Раздел документа
  Dim n As Long 'Счетчик документов
  Dim oHypRng As Range 'Место для вставки гиперссылки
  Dim sHyperlink As String 'Адрес гиперссылки
  
  'Текст гиперссылки
  sHyperlink = InputBox("Введите адрес для гиперссылки", "Вставка гиперссылки в колонтитул", "http://www.programmersforum.ru/showthread.php?t=71700")
  If Len(sHyperlink) = 0 Then Exit Sub
  
  'Диалог выбора папки с файлами
  With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Выберите папку с файлами"
    .ButtonName = "Выбрать"
    .AllowMultiSelect = False
    If .Show Then sDirectoryPath = .SelectedItems(1) Else Exit Sub
  End With
  
  sFileName = Dir(sDirectoryPath & "\*.doc*") 'читаем файлы из папки
  Do While Len(sFileName) > 0 'пока есть имя файла
    'Открываем документ
    Set oDoc = Documents.Open(sDirectoryPath & "\" & sFileName, AddToRecentFiles:=False)
    n = n + 1
    'Перебираем все разделы в документе и задаем текст нижнего и верхнего колонтитулов
    For Each oSec In oDoc.Sections
      Set oHypRng = oSec.Headers(wdHeaderFooterPrimary).Range
      oHypRng.Collapse wdCollapseStart
      oSec.Headers(wdHeaderFooterPrimary).Range.Hyperlinks.Add oHypRng, sHyperlink
      oSec.Headers(wdHeaderFooterPrimary).Range.InsertAfter " Верхний колонтитул раздела " & oSec.Index
      oSec.Footers(wdHeaderFooterPrimary).Range.Text = "Нижний колонтитул раздела " & oSec.Index
    Next
    oDoc.Close True 'Закрываем документ
    'Делаем то, что накопилось в системе, чтобы не зависнуть
    DoEvents
    Application.StatusBar = "Обработано " & n & " файлов"
    sFileName = Dir 'Читаем имя следующего файла
  Loop
  'Очищаем мусор
  Set oDoc = Nothing: Set oSec = Nothing: Set oHypRng = Nothing: Err.Clear
  'Сообщение о результатах работы
  MsgBox "В каталоге """ & sDirectoryPath & """ обработано " & n & " файлов", vbInformation + vbOKOnly, "Добавление колонтитулов"
End Sub
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 25.11.2009, 12:11   #8
provodnikam
Пользователь
 
Регистрация: 17.07.2009
Сообщений: 31
По умолчанию

Благодарю!!!
Всё работает!!!!!
provodnikam вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Колонтитулы KNatalia Microsoft Office Excel 6 11.11.2009 22:01
Автоматические гиперссылки о ячейкам. TiG Microsoft Office Excel 4 25.10.2009 11:58
Колонтитулы Excel nikolai_P Microsoft Office Excel 1 09.09.2009 15:52
Колонтитулы: как в предыдущем и поля Busine2009 Microsoft Office Word 7 06.08.2009 22:24
Колонтитулы при альбомной ориентации в MS Word OldNick85 Microsoft Office Word 1 14.11.2007 07:12