Как колонтитул vba excel

Создание верхнего и нижнего колонтитулов из кода VBA Excel: присвоение текста и его выравнивание, назначение шрифта, его размера, цвета и начертания.

Создание колонтитулов

Верхний и нижний колонтитулы в Excel состоят из трех частей: левой, центральной и правой. Следующий код VBA заполняет все части верхнего и нижнего колонтитулов их наименованиями:

Sub Test1()

    With ActiveSheet.PageSetup

        .LeftHeader = «Левая часть верхнего»

        .CenterHeader = «Центральная часть верхнего»

        .RightHeader = «Правая часть верхнего»

        .LeftFooter = «Левая часть нижнего»

        .CenterFooter = «Центральная часть нижнего»

        .RightFooter = «Правая часть нижнего»

    End With

End Sub

Слово «колонтитула» пропущено, чтобы текст разных частей колонтитулов не наезжал друг на друга. Обратите внимание на выравнивание текста в разных частях верхнего и нижнего колонтитулов.

Если в колонтитуле нужна одна строка, можно использовать ту часть колонтитула, которая имеет необходимое выравнивание по умолчанию:

Sub Test2()

    With ActiveSheet.PageSetup

        .LeftHeader = «»

        .CenterHeader = «»

        .RightHeader = «Текст для правой части верхнего колонтитула с выравниванием по правому краю»

    End With

End Sub

Удаление колонтитулов

Чтобы удалить колонтитулы из печатной формы, необходимо присвоить всем частям верхнего и нижнего колонтитула пустые строки:

Sub Test3()

    With ActiveSheet.PageSetup

        .LeftHeader = «»

        .CenterHeader = «»

        .RightHeader = «»

        .LeftFooter = «»

        .CenterFooter = «»

        .RightFooter = «»

    End With

End Sub

Коды форматирования

Специальные коды VBA Excel для форматирования верхнего и нижнего колонтитулов:

Код Описание
&L Выравнивает текст по левому краю
&C Выравнивает текст по центру
&R Выравнивает текст по правому краю
&E Включает или отключает двойное подчеркивание
&X Включает или отключает надстрочные символы
&Y Включает или отключает подстрочные символы
&B Включает или отключает полужирное начертание
&I Включает или отключает курсивное начертание
&U Включает или отключает одинарное подчеркивание
&S Включает или отключает зачеркнутое начертание
&»fontname» Указывает наименование шрифта
&nn Двузначное число, задающее размер шрифта
&color Цвет шрифта, задающийся шестнадцатеричным значением
&D Вставка текущей даты
&T Вставка текущего времени
&F Вставка имени файла (книги) Excel
&A Вставка имени рабочего листа
&P Вставка номера страницы
&P+number Вставка номера страницы плюс указанное число
&P-number Вставка номера страницы минус указанное число
&& Вставка одного амперсанда
&N Общее количество страниц на рабочем листе
&Z Вставка пути к файлу
&G Вставка изображения

Примеры форматирования

Примеры форматирования колонтитулов в VBA Excel с помощью специальных кодов.

Пример 1

Пример использования надстрочных и подстрочных символов:

Sub Primer1()

    With ActiveSheet.PageSetup

        .LeftHeader = «Левая часть « & «&X» & «верхнего» & «&X» & » колонтитула»

        .LeftFooter = «Левая часть « & «&Y» & «нижнего» & «&Y» & » колонтитула»

    End With

End Sub

В результате получаем: «Левая часть верхнего колонтитула» и «Левая часть нижнего колонтитула».

Пример 2

В этом примере задаем шрифт «Times New Roman» с размером 12 и двойным подчеркиванием для строки, вставляемой в левую часть верхнего колонтитула:

Sub Primer2_1()

    ActiveSheet.PageSetup.LeftHeader = «&»«Times New Roman»«&12&E» & «Шрифт Times New Roman, размер 12, двойное подчеркивание»

End Sub

‘или то же самое в более наглядном виде с использованием переменных

Sub Primer2_2()

Dim fnt As String, txt As String

fnt = «»«Times New Roman»«»

txt = «Шрифт Times New Roman, размер 12, двойное подчеркивание»

    ActiveSheet.PageSetup.LeftHeader = «&» & fnt & «&12&E» & txt

End Sub

Пример 3

Указываем полужирный курсив строке, состоящей из текущей даты, времени и имени листа, вставляемой в центральную часть верхнего колонтитула:

Sub Primer3()

    ActiveSheet.PageSetup.CenterHeader = «&B&I» & «&D  &T  &A»

End Sub

Пример 4

Вставка изображения в левую часть верхнего колонтитула:

Sub Primer4()

    With ActiveSheet.PageSetup

        .LeftHeaderPicture.Filename = «C:UsersEvgeniyDownloadsБезымянный1.png»

        .LeftHeader = «&G»

    End With

End Sub

Если изображение не большое, оно появится в колонтитуле, а большая картинка станет фоновым изображением печатных страниц.


 

rumpelshtitchen

Пользователь

Сообщений: 136
Регистрация: 15.05.2015

#1

13.07.2022 09:14:23

Доброго времени суток. Подскажите решение след. задачи.
Необходимо сделать колонтитул на определенные (выбранные) листы книги.
То есть, что бы при сохранении выбранных листов в PDF отображался колонтитул. На просторах интернета нашел код для написания макроса. Но не могу решить проблему отображения колонтитула на НЕСКОЛЬКИХ (определенных/ выбранных листах). Листы, на данный момент выбираются вруную, впоследствии, листы будут выбираться автоматически с помощью макроса. Подскажите, что добавить в код, что бы отображение происходило на всех необходимых листах.
Код изначально был вот такой:

Код
Sub Signature()                             'Для колонтитула
   With ActiveSheet.PageSetup
       .LeftFooter = "               Шифр: " & ['Ввод общих данных'!H19] 
       .CenterFooter = ""
       .RightFooter = "Лист  &P" & "     Листов &N  "
   End With
End Sub

«Поковырявшись», нашел вот такой вариант…..но он выкидывает ошибку…

Код
Sub Signature()                           
Dim xSh As Worksheet
    Application.ScreenUpdating = False
    For Each xSh In Worksheets
        xSh.Select
        Call CodSignature
    Next
    Application.ScreenUpdating = True
End Sub
Sub CodSignature()                             
       .LeftFooter = "               Шифр: " & ['Ввод общих данных'!H19] 
       .CenterFooter = ""
       .RightFooter = "Лист  &P" & "     Листов &N  "
   End With
End Sub
 

И тут же, возник еще один вопрос касаемо колонтитула, объясните пожалуйста, где дописать код (условия) для текста (жирный, курсив и т.д.)

Изменено: rumpelshtitchen13.07.2022 09:19:21

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#3

13.07.2022 09:40:58

Код
Sub Signature()                           
Dim xSh As Worksheet
    For Each xSh In Worksheets
        CodSignature xSh
    Next
End Sub

Sub CodSignature(ws as worksheet)        
  with ws                     
    .LeftFooter = "               Шифр: " & ['Ввод общих данных'!H19] 
    .CenterFooter = ""
    .RightFooter = "Лист  &P" & "     Листов &N  "
  End With
End Sub

задайте нужный формат вручную, запишите действия макрорекордером, используйте полученный макрос

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Ігор Гончаренко, Благодарю за ответ. Но вопрос про форматирование текста остается интересным исключительно для собственного понимания, то есть, не просто скопировать макрос что бы он работал, а понять, как правильно написать код, куда вставить необходимые строки, что бы можно было изменить форматирование.

 

rumpelshtitchen

Пользователь

Сообщений: 136
Регистрация: 15.05.2015

#5

13.07.2022 09:56:41

Цитата
написал:
Sub CodSignature(ws as worksheet)  

Выдает ошибку, в данном месте…что при выборе одного листа, что при выборе нескольких.

Изменено: rumpelshtitchen13.07.2022 09:57:42

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#6

13.07.2022 10:01:42

Цитата
rumpelshtitchen написал:
задайте нужный формат вручную, запишите действия макрорекордером, используйте полученный макрос

я предлагал не использовать макрос полностью, а посмотреть как там были пременены нужные вам форматы и использовать это в своем коде
это как раз очень полезно «для собственного понимания» не использовать макрос целиком, а использовать нужные фрагменты кода из него
собственное понимание возникнет, когда сможете самостоятельно получить нужный результат

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Ігор Гончаренко, Благодарю, буду пробовать.

 

rumpelshtitchen

Пользователь

Сообщений: 136
Регистрация: 15.05.2015

#8

13.07.2022 10:56:46

Цитата
написал:
Sub Signature()                           Dim xSh As Worksheet    For Each xSh In Worksheets        CodSignature xSh    NextEnd Sub Sub CodSignature(ws as worksheet)          with ws                         .LeftFooter = »               Шифр: » & [‘Ввод общих данных’!H19]     .CenterFooter = «»    .RightFooter = «Лист  &P» & »     Листов &N  »  End WithEnd Sub

Вот, я совсем запутался…вопрос, для понимания:
что такое xSh?
если я правильно понял, та даннаое выражение «ws as worksheet» это сокращение, то есть мы присваиваем значению «ws» условие «worksheet»?
куда, а главное почему мы избавились от «PageSetup»?

 

rumpelshtitchen

Пользователь

Сообщений: 136
Регистрация: 15.05.2015

#9

13.07.2022 11:02:14

Ігор Гончаренко, задал необходимый формат вручную, как Вы и советовали, получил необходимую строчку .Font.Italic = True….данную строку переставлял и до и после…

Код
with ws                         .LeftFooter = "               Шифр: " & ['Ввод общих данных'!H19] 
    .CenterFooter = ""
    .RightFooter = "Лист  &P" & "     Листов &N  "

ни чего не получается. Где я ошибаюсь, подскажите, направьте пожалуйста.

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#10

13.07.2022 11:12:16

Цитата
rumpelshtitchen написал:
ws as worksheet

обьявлена переменная названного типа

Цитата
rumpelshtitchen написал:
почему мы избавились от «PageSetup»?

не мы а вы, почему я не знаю
файла нет пишу что попало, не проверяя и не особо вникая
видимо это
with ws
следовало написать так:
with ws.PageSetup

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

А вот еще вопрос назрел. А как будет выглядеть строчка для конкретно выбранных листов. Select ?  я втак понял что «worksheet» это рабочие листы, если я правильно понял это все листы в книге.

 

забудьте о Селектах, не нужны они практически НИКОГДА
а с worksheet ничего вы не поняли

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Ігор Гончаренко, проблема заключается в следующем. В книге около 150 листов. и я так понимаю при условии «worksheet», макрос применяет их, ко всем 150 листам, книжка повисает….и…..все. А по условию, необходимо отобразить колонтитул на 15,,,20 листах, которые выбираются вручную (впоследствии через макрос). Именно по этому и задаю вопрос про СЕЛЕКТ да и про ВОРКШИТ, что бы понять как это все работает.

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#14

13.07.2022 11:51:49

Цитата
rumpelshtitchen написал:
что бы понять как это все работает

чтобы понять как работает, надо с самого начала начать изучать. Есть понятие лист, есть книга, есть коллекции листов рабочих и листов других. Есть коллекция выделенных листов активной книги. Много чего есть.

Цитата
rumpelshtitchen написал:
еобходимо отобразить колонтитул на 15,,,20 листах, которые выбираются вручную (впоследствии через макрос).

чтобы сказать как это сделать — надо понимать по какому критерию определять те листы, на которых колонтитул надо менять. Можно просто пройтись по всем выделенным листам:

Код
For Each ws In ActiveWindow.SelectedSheets
CodSignature xSh
next

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#15

13.07.2022 12:00:18

Цитата
rumpelshtitchen написал:
я так понимаю при условии «worksheet»,

вы второй раз называете это условием, а это никакое не условие, это тип одного из обьектов обьектной модели Excel
Select вам все равно не нужен
в теме как отметить несколько заданных листов имена нужных листов уже были затолканы в массив, от туда их и нужно брать (из этого массива) и не нужно их отмечать (особенно все вместе)
читайте «VBA для чайников» постепенно информация начнет укладываться в голове начнете понимать что это такое и как этим пользоваться

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

rumpelshtitchen

Пользователь

Сообщений: 136
Регистрация: 15.05.2015

#16

13.07.2022 12:22:19

Дмитрий(The_Prist) Щербаков, Вы верно объяснили задачу, которую я не смог в должной степени донести, необходимо пройтись по всем выделенным листам и на них проставить колонтитул. Выбор листов произвольный, то есть сам оператор, ручками, выбирает необходимые ему листы, на которых и должен отображаться колонтитул.
Взяв за основу Ваш кусоче кода написал вот такой код

Код
Sub Signature()Dim xSh As Worksheet
    For Each ws In ActiveWindow.SelectedSheets
    CodSignature xSh
    Next
End Sub
 Sub CodSignature(ws As Worksheet)
    With ws.PageSetup
    .LeftFooter = "               Øèôð: " & ['Ââîä îáùèõ äàííûõ'!H19] & " ¹ " & ['Ââîä îáùèõ äàííûõ'!M7] & " " & ['Ââîä îáùèõ äàííûõ'!H9] & " - " & ['Ââîä îáùèõ äàííûõ'!H15]
    .CenterFooter = ""
    .RightFooter = "Ëèñò  &P" & "     Ëèñòîâ &N  "
  End With
End Sub

при выполнении выдает ошибку, понимаю, что где то не верно указан параметр «листов» и предположу что в данном месте:

Код
 Sub CodSignature(ws As Worksheet)

но в чем ошибка….не могу понять, хоть убей..

Изменено: rumpelshtitchen13.07.2022 12:23:07

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#17

13.07.2022 12:27:55

Цитата
rumpelshtitchen написал:
выдает ошибку

возможно

Цитата
rumpelshtitchen написал:
но в чем ошибка

основная — в том, что не пишите ни на какой строке, ни какая ошибка.
Предположу, что опять же — от незнания полного — Вы просто скопировали мой код и так же просто вставили его, даже не пытаясь понять что и зачем. И поэтому у Вас везде в Ваших кодах ранее используется переменная xSh, а мой код скопировали как есть, в котором используется не xSh, а ws. В итоге передаете в функцию не перебираемый лист, а Nothing.

Код
Sub Signature()
    Dim xSh As Worksheet
    For Each xSh In ActiveWindow.SelectedSheets
    CodSignature xSh
    Next
End Sub

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Дмитрий(The_Prist) Щербаков, к большому сожалению, должен признать, что не ясны мне переменные…и листы. Скопировать и просто вставить было бы просто, в оправдание могу сказать, я бы не раздувал такую большую тему. А пошел в неправильном направлении и искал зависимость в листах….а не в переменной. Трудно понять, как это все работает, по этому и нет понимания, к сожалению. Огромное спасибо за помощь и объяснение.

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#19

13.07.2022 12:47:00

Цитата
rumpelshtitchen написал:
Трудно понять, как это все работает

трудно понять что вы пишете

Цитата
rumpelshtitchen написал:
и искал зависимость в листах….а не в переменной.

с вашего на человеческий это как переводится? и что значит?
и вообще, файл у вас есть, на котором вы все это выполняете
выкладываете его сюда, обьясняете что хотите получить в итоге и на каком шаге возникла проблема

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Ігор Гончаренко, Имеется книга. На листе7 вводятся данные, номер и дата.
На листе «Тит_лист» имеется кнопка 1, которая запускает выполнение макроса, применяемое к 5ти оставшимся листам, в том числе и созданию колонтитула.
Вопрос, как сделать так, что бы колонтитул, отображался на выбранных листах (выбор осуществляется оператором, то есть их может быть 2, а могут быть и все 5) так же как на листе «Тит_лист».
В дополнение ко всему: это только часть файла. В оригинальном файле около 150 листов (какие то скрыты, какие то нет.) На печать в ПДФ идут 15,,,,20 листов выбранные оператором. При нажатии конпки1 в основном фале, на выполнение макроса уходит около 1…1,5 минут, и это при условии, что макрос на автоматический выбор листов и создание ПДФ еще не написан.

Изменено: rumpelshtitchen13.07.2022 17:17:50

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#21

14.07.2022 14:49:26

Цитата
rumpelshtitchen написал:
Имеется книга. На листе7 вводятся данные, номер и дата

в ячейку А1 и ниже вводятся имена листов

дальше все тоже самое что делали вы

Прикрепленные файлы

  • Пример (Колонтитул) (1).xlsm (95.06 КБ)

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

rumpelshtitchen

Пользователь

Сообщений: 136
Регистрация: 15.05.2015

#22

26.09.2022 09:10:19

Друзья, доброго времени суток, в продолжении данной темы, подскажите, как деактивировать данный макрос. То есть сделать так, что бы уже созданный колонтитул исчез при печати.
Сам код:

Код
Sub Signature2()            ' Макрос для проставления колонтитула (меняет колонтитул на всех листа)
Dim xSh As Worksheet
    For Each xSh In Worksheets
        CodSignature2 xSh
    Next
End Sub
 Sub CodSignature2(ws As Worksheet)
  With ws.PageSetup
    .LeftFooter = "               Шифр: " & ['Ввод общих данных'!H19] & " № " & ['Ввод общих данных'!M7] & " " & ['Ввод общих данных'!H9] & " - " & ['Ввод общих данных'!H15]
    .CenterFooter = ""
    .RightFooter = "Лист  &P" & "     Листов &N  "
  End With
End Sub
 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#23

26.09.2022 10:54:42

Код
.LeftFooter = ""
.CenterFooter = ""
.RightFooter =""
 

rumpelshtitchen

Пользователь

Сообщений: 136
Регистрация: 15.05.2015

#24

26.09.2022 14:15:36

RAN, спасибо…я так и сделал, просто подумал что это не совсем верно…еще раз огромное спасибо за ответ.

Содержание

  1. Коды форматирования и VBA для верхних и нижних колонтитулов
  2. Пример
  3. Поддержка и обратная связь
  4. VB*: Формирование колонтитулов в книге Excel(номера страниц).
  5. Сообщения 5
  6. 1 Тема от BeS Yara 2011-06-24 11:27:53
  7. Тема: VB*: Формирование колонтитулов в книге Excel(номера страниц).
  8. 2 Ответ от JSmаn 2011-06-28 23:10:11
  9. Re: VB*: Формирование колонтитулов в книге Excel(номера страниц).
  10. 3 Ответ от BeS Yara 2011-06-29 12:09:42 (изменено: BeS Yara, 2011-06-29 12:28:16)
  11. Re: VB*: Формирование колонтитулов в книге Excel(номера страниц).
  12. 4 Ответ от JSmаn 2011-06-29 16:26:05
  13. Re: VB*: Формирование колонтитулов в книге Excel(номера страниц).
  14. VBA Excel. Колонтитулы
  15. Создание колонтитулов
  16. Удаление колонтитулов
  17. Коды форматирования
  18. Примеры форматирования
  19. Пример 1
  20. Пример 2

Коды форматирования и VBA для верхних и нижних колонтитулов

Следующие специальные коды форматирования и Visual Basic для приложений (VBA) можно включить в свойства верхнего и нижнего колонтитулов (LeftHeader, CenterHeader, RightHeader, LeftFooter, CenterFooter и RightFooter).

Код форматирования Description
&L Слева выравнивает следующие символы.
&C Центрирует следующие символы.
&R По правому краю выравниваются следующие символы.
&E Включает или отключает печать с двойным подчеркиванием.
&X Включает или отключает печать надстрочных индексов.
&Да Включает или отключает печать подстрочных индексов.
&B Включает или выключает печать полужирным шрифтом.
&I Включает или выключает печать курсивом.
&U Включает или отключает печать подчеркивания.
&S Включает или отключает зачеркивную печать.
&»fontname» Выводит символы, следующие за указанным шрифтом. Обязательно включите двойные кавычки.
&nn Выводит символы, следующие за указанным размером шрифта. Используйте двухзначное число, чтобы указать размер в точках.
&Цвет Выводит символы указанным цветом. Пользователь предоставляет шестнадцатеричное значение цвета.
&»+» Выводит символы, следующие в шрифте Заголовок текущей темы. Обязательно включите двойные кавычки.
&»-« Выводит символы, которые следуют за шрифтом Body текущей темы. Обязательно включите двойные кавычки.
&K xx. Snnn Выводит символы, которые следуют в указанном цвете из текущей темы.

xx — это двухзначное число от 1 до 12, указывающее используемый цвет темы.

Snnn указывает оттенок (оттенок) этого цвета темы. Укажите S как + для создания более светлого оттенка; Укажите S как — для создания более темного оттенка.

nnn — это трехзначное целое число, указывающее процент от 0 до 100.

Если значения, указывающие цвет темы или оттенок, не входят в описанные ограничения, Excel будет использовать ближайшее допустимое значение.

VBA code Description
&D Выводит текущую дату.
&T Выводит текущее время.
&F Выводит имя документа.
&A Выводит имя вкладки книги.
&P Выводит номер страницы.
&P+number Выводит номер страницы плюс указанное число.
&P-номер Выводит номер страницы за вычетом указанного числа.
&& Печатает один амперсанд.
&N Выводит общее количество страниц в документе.
&Z Выводит путь к файлу.
&G Вставляет изображение.

Пример

В следующем коде показано, как можно использовать коды форматирования и VBA для изменения сведений о заголовке и внешнего вида.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

VB*: Формирование колонтитулов в книге Excel(номера страниц).

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщения 5

1 Тема от BeS Yara 2011-06-24 11:27:53

  • BeS Yara
  • Разработчик
  • Неактивен
  • Рейтинг : [ 2 | 0 ]

    Тема: VB*: Формирование колонтитулов в книге Excel(номера страниц).

    Столкнулся с маленькой проблемой при генерации рабочей книги из VB.NET — колонтитулы(«Страница &P из &N») прописанные как в сгенерированнм макросе не отрабатывались(выводилось «Страница из «). Оказалось проблема известна и связана с особенностями локализации различных версий офиса.
    Печать офисных документов:Колонтитулы.
    Суть решения в том чтобы прописать варианты и для русского кода и для английского:

    Неправильные с точки зрения конкретной версии офиса коды игнорируются и на выходе получаем «Страница 1 из 351».

    P.S. В целом весьма любопытная статья по генерации html-документа для открытия в офисе — может кому-нибудь окажется полезна.
    P.P.S. Отдельная анонимная благодарность пользователям SQL.RU, в чьём обсуждении я наткнулся на эту замечательную ссылку

    2 Ответ от JSmаn 2011-06-28 23:10:11

    • JSmаn
    • Разработчик
    • Неактивен
    • Рейтинг : [ 34 | 0 ]

      Re: VB*: Формирование колонтитулов в книге Excel(номера страниц).

      BeS Yara, если не затруднит, напишите суть проблемы с примером кода, а также решение с комментарием. И тогда можно будет пополнить замечательную Коллекцию 🙂

      3 Ответ от BeS Yara 2011-06-29 12:09:42 (изменено: BeS Yara, 2011-06-29 12:28:16)

      • BeS Yara
      • Разработчик
      • Неактивен
      • Рейтинг : [ 2 | 0 ]

        Re: VB*: Формирование колонтитулов в книге Excel(номера страниц).

        Суть проблемы в том, что русский офис(2003) несмотря на то что генерирует в макрос коды для страницы и кол-ва страниц в колонтитула на английском, при добавлении этих кодов из VB.NET(судя по найденным тамам проблема общая и для других языков, на SQL.RU вообще делфи обсуждали ) колонтитулы не отображаются верно. А ведь запись макроса с последующей адоптацией в скрипт для многих основной метод получения знаний(по крайней мере для меня он первый, а уже потом хэлп, MSDN, яндекс).
        Например записываем макрос с добавлением «Страница X из Y». После удаления всего лишнего остаётся:

        Что примечательно, в конструкторе колонтитула это выглядит иначе: «Страница &[Страница] из &[Страниц]»
        В VB.NET кусок выглядит аналогично(я использовал для работы с экселем сборку Microsoft.Office.Interop.Excel). Из офиса макрос работает нормально, а вот при создании книги из VB.NET вместо «Страница 1 из 371» получается «Страница из » хотя если зайти в создание колонтитула видим законные(согласно записанному макросу) «Страница &P из &N»

        Как выяснилось при прочтении статьи, локализованный офис не всегда принимает нелокализованные коды(формула в ячейке, кстати, тоже чувствительна к локализации — если попробовать в русском офисе использовать английскую функцию для суммы, например, можно в этом убедиться).
        Так как приложение возможно будет запускаться не только с 2003-м и не только с руссифицированным, то вариант подставлять локализованные коды не подходит. Так вот в статье и предлагается указывать и английские коды и локализованные. В этом случае эксель игнорирует(и не отображает) те что не знает и отрабатывает знакомые:
        Приводить всю процедуры смысла нет — проблема с конкретным свойством.

        и — буквы русские!

        В конструкторе теперь получается «Страница &[Страница]&P из &[Страниц]&N»
        На выходе при печати — «Страница 1 из 371»

        P.S. Не знаю насколько тянет на коллекцию, хотя несколько ценных часов на поиск этого решения я потратил, так что лишним не будет(как часть Вашей темы «WSH: преобразуем макрос VBA в скрипт VBScript» ).

        4 Ответ от JSmаn 2011-06-29 16:26:05

        • JSmаn
        • Разработчик
        • Неактивен
        • Рейтинг : [ 34 | 0 ]

          Re: VB*: Формирование колонтитулов в книге Excel(номера страниц).

          Отлично, спасибо. Перемещаю тему в раздел по VBA.

          Источник

          VBA Excel. Колонтитулы

          Создание верхнего и нижнего колонтитулов из кода VBA Excel: присвоение текста и его выравнивание, назначение шрифта, его размера, цвета и начертания.

          Создание колонтитулов

          Верхний и нижний колонтитулы в Excel состоят из трех частей: левой, центральной и правой. Следующий код VBA заполняет все части верхнего и нижнего колонтитулов их наименованиями:

          Слово «колонтитула» пропущено, чтобы текст разных частей колонтитулов не наезжал друг на друга. Обратите внимание на выравнивание текста в разных частях верхнего и нижнего колонтитулов.

          Если в колонтитуле нужна одна строка, можно использовать ту часть колонтитула, которая имеет необходимое выравнивание по умолчанию:

          Удаление колонтитулов

          Чтобы удалить колонтитулы из печатной формы, необходимо присвоить всем частям верхнего и нижнего колонтитула пустые строки:

          Коды форматирования

          Специальные коды VBA Excel для форматирования верхнего и нижнего колонтитулов:

          Код Описание
          &L Выравнивает текст по левому краю
          &C Выравнивает текст по центру
          &R Выравнивает текст по правому краю
          &E Включает или отключает двойное подчеркивание
          &X Включает или отключает надстрочные символы
          &Y Включает или отключает подстрочные символы
          &B Включает или отключает полужирное начертание
          &I Включает или отключает курсивное начертание
          &U Включает или отключает одинарное подчеркивание
          &S Включает или отключает зачеркнутое начертание
          &»fontname» Указывает наименование шрифта
          &nn Двузначное число, задающее размер шрифта
          &color Цвет шрифта, задающийся шестнадцатеричным значением
          &D Вставка текущей даты
          &T Вставка текущего времени
          &F Вставка имени файла (книги) Excel
          &A Вставка имени рабочего листа
          &P Вставка номера страницы
          &P+number Вставка номера страницы плюс указанное число
          &P-number Вставка номера страницы минус указанное число
          && Вставка одного амперсанда
          &N Общее количество страниц на рабочем листе
          &Z Вставка пути к файлу
          &G Вставка изображения

          Примеры форматирования

          Примеры форматирования колонтитулов в VBA Excel с помощью специальных кодов.

          Пример 1

          Пример использования надстрочных и подстрочных символов:

          В результате получаем: «Левая часть верхнего колонтитула» и «Левая часть нижнего колонтитула».

          Пример 2

          В этом примере задаем шрифт «Times New Roman» с размером 12 и двойным подчеркиванием для строки, вставляемой в левую часть верхнего колонтитула:

          Источник

По умолчанию при вставке верхнего или нижнего колонтитула в рабочий лист содержимое верхнего или нижнего колонтитула будет применено ко всем страницам. Для многих людей разные страницы могут иметь разное содержимое в своих таблицах. И они имеют тенденцию различать эти страницы с содержимым верхнего или нижнего колонтитула после распечатки рабочего листа. Как применить разные верхние или нижние колонтитулы на каждой странице рабочего листа? Метод, описанный в этой статье, может вам помочь.

Применяйте разные верхние или нижние колонтитулы на каждой странице с кодом VBA


Применяйте разные верхние или нижние колонтитулы на каждой странице с кодом VBA

Следующий код VBA может помочь вам применить разные верхние или нижние колонтитулы на каждой странице рабочего листа. Пожалуйста, сделайте следующее.

1. нажмите другой + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложенийокно s.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем скопируйте и вставьте приведенный ниже код VBA в Code окно. Смотрите скриншот:

Код VBA: применение разных заголовков на каждой странице в Excel

Sub DifferentHeaderFooter()
    Dim ws As Worksheet
    Dim vLeft As Variant, vRight As Variant, xRg As Variant
    Set ws = ActiveSheet
    On Error Resume Next
    vLeft = Array("First page", "Second page", "Third page", "fourth page")
    xRg = Array("A1:C50", "A51:C100", "A101:C150", "A151:C200")

    Application.ScreenUpdating = False
    For i = 0 To UBound(vLeft)
        With ws.PageSetup
        .PrintArea = xRg(i)
        .LeftHeader = vLeft(i)
        End With
        ws.PrintPreview
    Next i
    Application.ScreenUpdating = True
    ws.PageSetup.PrintArea = ""
End Sub

Заметки:

1. В коде VBA вам нужно назначить разные имена верхнего или нижнего колонтитула в фрагменте кода «vLeft = Array («Первая страница», «Вторая страница», «Третья страница», «четвертая страница»)».

2. И укажите область печати каждой страницы в текущем листе в фрагменте кода «xRg = массив («A1: C50», «A51: C100», «A101: C150», «A151: C200»)».

3. Чтобы применить разные нижние колонтитулы, замените слово «заголовок»В коде с«нижний колонтитул».

3. нажмите F5 ключ для запуска кода. Тогда предварительный просмотр всплывает окно, нажмите Печать / PDF кнопку, чтобы начать печать страниц с разными верхними или нижними колонтитулами.

Внимание: Если на листе 4 заданных печатных страницы, вам нужно щелкнуть Печать / PDF нажмите кнопку четыре раза, чтобы завершить всю печать.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (0)


Оценок пока нет. Оцените первым!

Категория: Excel
Опубликовано: 30 октября 2021
Просмотров: 1946

Фрагмент кода для работы с верхним и нижним колонтитулами

'верхний колонтитул
With wdDoc
    For Each Section In .Sections
        For Each Header In Section.Headers
            With Header.Range.Find
                .Text = "&sn"
                .Replacement.Text = SN$
                .Wrap = wdFindContinue
                Call .Execute(Replace:=wdReplaceAll)
            End With
        Next
    Next Section
End With

'нижний колонтитул
With wdDoc
    For Each Section In .Sections
        For Each footer In Section.Footers
            With footer.Range.Find
                .Text = "&adress"
                .Replacement.Text = Adress$
                .Wrap = wdFindContinue
                Call .Execute(Replace:=wdReplaceAll)
            End With
        Next
    Next Section
End With

ZIP архив с проектом


Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!

 С уважением, авторы сайта Компьютерапия

Понравилось? Поделись этим видео с друзьями!

Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!

Понравилась статья? Поделить с друзьями:
  • Как к генератору случайных чисел в excel
  • Как колонки преобразовать в строки в excel
  • Как качественно перевести pdf в word
  • Как к в excel поставить умножение столбцов
  • Как количество умножить на сумму в excel