Макрос для форматирования таблиц в word

Приходилось ли вам выполнять при форматировании документа несколько раз повторять одни и те же команды? Предположим, в документе 50 таблиц. И каждую надо привести в порядок. Повторяющиеся заголовки, выравнивание назначить, да мало ли чего ещё сделать. И вот раз за разом повторяются одни те же команды. Так что знакомимся с понятием МАКРОС В ТАБЛИЦЕ.

В офисных программах есть замечательная возможность: объединить несколько команд в одну макрокоманду. Макрокоманда – это последовательность команд, которые будут работать автоматически при запуске макроса.

Вот определение, которое я взяла с любимого ресурса https://dic.academic.ru/dic.nsf/ruwiki/15081:

В «офисных» продуктах (OpenOffice.org, Microsoft Office и др.), в графических программах (например, CorelDRAW) при обработке макроса автоматически выполняется заданная для каждого макроса последовательность действий — нажатия на клавиши, выбор пунктов меню и т. д.

Я приложила к уроку документ с несколькими таблицами (скачать файл тут). Я удалила текст документа (всё-таки авторское право и всё такое…):

Макрос для таблицы

По окончании урока вы сможете:

  1. Составить алгоритм форматирования таблицы
  2. Настроить ленту «Разработчик»
  3. Записать макрос форматирования таблицы
  4. Проверить макрос в действии
  5. Добавить кнопку «Макрос» на панель быстрого доступа

1. Алгоритм форматирования
таблицы

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

  1. Заголовок, повторяющийся при переходе таблицы на следующую страницу
  2. Выравнивание содержимого ячеек заголовков по центру и по середине
  3. Заливка строки заголовка цветом
  4. Текст заголовка таблицы полужирного начертания красного цвета
  5. Поля ячеек – 0,05
  6. Видимые границы для всей таблицы красного цвета
  7. Автоподбор по ширине окна (вдруг таблица меньше ширины печатного поля)

Почему такая последовательность? При написании макрокоманды есть одна особенность:

Понять и запомнить! Ни в коем случае нельзя щелкать ЛМ по области
документа! Работать только с лентами!

Так вот, после выделения заголовка можно выделить всю таблицу командой с ленты, а наоборот – нельзя!

Итак, нам надо записать семь команд одной макрокомандой. По ходу дела команд может оказаться больше.

Для того, чтобы записать макрос, необходимо найти эту команду. Команда «Запись макроса» находится на ленте «Разработчик», которая в настоящий момент не видна.

2. Настройка ленты
«Разработчик»

Шаг 1. Выходим в режим настраивания ленты (ПМ в любом месте любой ленты → команда Настроить ленту из контекстного меню):

настройка ленты

Шаг 1. Отметим галочкой ленту «Разработчик»[1]

настройка ленты

ОК!

Вообще-то команда «Запись
макроса» есть на ленте «Вид»:

лента Вид

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

3. Макрос для таблицы. Запись макроса для форматирования таблицы

Шаг 1. Выделяем заголовок таблицы (щелкаем ЛМ
на полосе выделения напротив заголовка таблицы):

Макрос для таблицы

Шаг 2. Запускаем запись макроса (лента
Разработчик → группа команд Код → команда Запись макроса):

Макрос для таблицы

  1. Можно ввести имя макроса, но имейте в виду, что пробелы недопустимы, то
    есть имя макроса будет выглядеть так – «Форматирование таблицы».

Макрос для таблицы

  1. Назначить выполнение макроса от нажатия единственной кнопке. Но кнопка должна быть уникальная (никогда не пользуюсь).
  2. Ввести описание макроса. Здесь никаких ограничений. Конечно, если макрос единственный, то можно и обойтись без описания. Я часто использую макросы, поэтому без описания просто не обойтись.
  3. Назначить выполнение макроса от нажатия сочетания функциональной клавиши плюс любой клавиши. Но при этом недопустимо использовать устойчивые системные сочетания, например, Ctrl+X, так как это сочетание зарезервировано для команды «Вырезать в буфер обмена».
  4. Из этого выпадающего меню выбираем доступность макроса для определенного документа. Если выбираем Normal.dotm, то наш макрос будет доступен для всех документов, созданных на основе шаблона Normal.dotm. Если мы создали документ на основе другого пользовательского шаблона, то в списке появится имя этого пользовательского шаблона, и тогда все документы на основе этого шаблона будут иметь внедрённый макрос. Но это действительно только для шаблонов, которые имеются на нашем компьютере.

Шаг 3. Назначаем сочетание клавиш (например,
Ctrl+1):

Макрос для таблицы

Нажимаем клавиши «Назначить» и «Закрыть» и знакомимся с новым видом курсора:

Макрос для таблицы

Шаг 4. Назначаем режим «Повторить строки
заголовков» (лента Макет → группа команд Данные → команда Повторить строки
заголовков):

Макрос для таблицы

Шаг 5. Назначаем выравнивание содержимого
ячеек строки заголовков по центру (лента Макет → группа команд Выравнивание → команда
Выровнять по центру):

Макрос для таблицы

Шаг 6. Назначаем заливку строки заголовка
(лента Конструктор → группа команд Стили таблиц → команда Заливка → выбор цвета
заливки из палитры):

Макрос для таблицы

Шаг 7. Устанавливаем полужирное начертание шрифта
заголовка и назначаем ему красный цвет (лента Главная → группа команд Шрифт → кнопка
«Ж» и кнопка Цвет текста → выбор цвета из палитры):

Макрос для таблицы

Шаг 8. Выделяем всю таблицу лента Макет → группа
команд Таблица → команда Выделить → команда Выделить таблицу из выпадающего
меню):

Макрос для таблицы

Шаг 9. Назначаем границы таблицы (лента
Конструктор → группа команд Обрамление → команда Цвет пера → выбор цвета
границы из палитры → команда Граница → команда Все границы из выпадающего
меню):

Макрос для таблицы

Шаг 10. Назначаем поля ячеек (лента Макет → группа команд Выравнивание → команда Поля ячейки → диалоговое окно Параметры таблицы[2] → Поля ячеек пользовательские):

Макрос для таблицы

Шаг 11. Устанавливаем Автоподбор таблицы по ширине окна (лента Макет → группа команд Размер ячейки → команда Автоподбор по ширине окна[3] из выпадающего меню):

Макрос для таблицы

Шаг 12. Останавливаем запись макроса (лента
Разработчик → группа команд Код → команда Остановить запись):

Макрос для таблицы

Команда «Остановить запись» дублируется скромным квадратиком на строке состояния:

Макросы в таблице

Всё! Макрос для таблицы готов!

4. Проверка макроса в действии

Шаг 1. Выделяем заголовок любой таблицы:

Макросы в таблице

Шаг 2. Нажимаем сочетание клавиш Ctrl+1 и любуемся результатом:

Макросы в таблице

А теперь посмотрим,
как будет работать макрос на таблице со сложным заголовком. В учебном файле это
Таблица 4.

Шаг 1. Выделяем сложный заголовок, то есть
заголовок, состоящий из двух строчек и объединённых ячеек:

Макросы в таблице

Шаг 2. Нажимаем сочетание клавиш Ctrl+1 и любуемся результатом:

Макросы в таблице

И под занавес.

5. Кнопка запуска макроса «Форматирование_таблицы» на Панели быстрого доступа

Шаг 1. Вызываем диалоговое окно «Параметры Word» (Панель быстрого доступа → команда Другие команды из выпадающего меню):

Панель быстрого доступа

Как настраивать Панель быстрого доступа я рассказывала в Уроке 18 и Уроке 19.

Шаг 2. Выбираем список «Макрос» (кнопка выпадающего
меню → список Макрос):

Панель быстрого доступа

Шаг 3. Добавляем макрос для таблицы на Панель быстрого доступа (пока макрос один, но у нас всё впереди):

Панель быстрого доступа

ОК! А вот результат:

настройка ленты

Макрос для таблицы будет запускаться при нажатии кнопки на Панели быстрого доступа.

Теперь вы сможете:

  1. Составить алгоритм форматирования таблицы
  2. Настроить ленту «Разработчик»
  3. Записать макрос форматирования таблицы
  4. Проверить макрос в действии
  5. Добавить кнопку «Макрос» на панель быстрого доступа

[1]
В контекстном меню – «Настройка ленты», а в окне «Параметры Word» – «Вкладка»

[2] Интересно, почему команда «Поля ячейки», а диалоговое окно называется «Параметры таблицы»? Загадка природы, небрежность переводчиков или шутка разработчиков?

[3]
Вообще-то команда имеет смысл «Автоподбор по ширине печатного поля», но не
будем придираться.

0 / 0 / 0

Регистрация: 10.05.2010

Сообщений: 10

1

10.05.2010, 15:14. Показов 29610. Ответов 17


Студворк — интернет-сервис помощи студентам

Здравствуйте! У меня есть куча документов с таблицами на 3 листа. Нужно, чтобы по нажатию кнопки всё содержимое отформатировалось(уменьшился шрифт, уменьшилась высота строк, удалились разрывы страниц и содержимое колонтитулов и т.д). Т.е. всё должно уместиться на одном листе! Все документы одинаковые. Пример документа, кидаю. Заранее благодарю!!!!



0



Busine2009

Заблокирован

10.05.2010, 16:24

2

faiza,
т.е. колонтитулы вообще не нужны и нумерация страниц тоже не нужна?



0



0 / 0 / 0

Регистрация: 10.05.2010

Сообщений: 10

10.05.2010, 16:47

 [ТС]

3

Не нужны. Главное, чтобы всё влезло на одну страницу.

Добавлено через 5 минут
Пожалуйста, помогите мне!!! Нужно в ближайшие 3 часа!!!! Я в долгу не останусь!!! Можно ещё удалить строки в таблицах с нумерацией колонок и удалить строки, где «руководитель…подпись….», оставить только после 5й таблицы!!!



0



Busine2009

Заблокирован

10.05.2010, 23:45

4

faiza,
левое поле 3 см — это для чего-то нужно (для брошюровки)? Правое 1,5 см — это тоже для чего-то нужно?
И какой Word 2003 или др.?

Добавлено через 2 часа 12 минут
faiza,
вот макрос. Затем надо будет в нескольких местах удалить двойные энтеры и в ячейках таблиц убрать энтеры, чтобы текст занимал меньше строк.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
Sub m_1()
Dim response As String
Dim oTable As Table
Dim oSec As Section
Dim oFootnote As Footnote
Dim oHeader As HeaderFooter
Dim oFooter As HeaderFooter
'Размер шрифта
    ActiveDocument.Range.Font.Size = 8
'Копия документа
    response = MsgBox("Есть копия данного документа?", vbCritical + vbYesNo, "Предупреждение")
        If response = vbNo Then
            Exit Sub
        End If
'Принять все Изменения
    ActiveDocument.AcceptAllRevisions
    
'Обычный режим
    ActiveWindow.View.Type = wdNormalView
'Шрифт
    ActiveDocument.Range.Font.Name = "Times New Roman"
'Одинарный междустрочный интервал
    ActiveDocument.Range.ParagraphFormat.Space1
'Во всём документе Основной текст (не Уровень 1, Уровень 2 и т.д.)
    ActiveDocument.Range.Paragraphs.OutlineLevel = wdOutlineLevelBodyText
'Удаляем в 2 этапа все разрывы разделов
    If ActiveDocument.Sections.Count > 1 Then
        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = "^b"
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .Execute
        End With
        Selection.MoveLeft
        Selection.TypeParagraph
        Do While Selection.Sections(1).Index <> ActiveDocument.Sections.Count - 1
            Application.Browser.Next
            Application.Browser.Next
            Selection.MoveLeft
            Selection.TypeParagraph
        Loop
        
        Selection.HomeKey unit:=wdStory
            
        With Selection.Find
            .Text = "^b"
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            While .Execute
                .Parent.Delete
            Wend
        End With
    End If
'Удаляем Разрывы страниц
    With ActiveDocument.Range.Find
        .Text = "^m"
        .Replacement.Text = "^p"
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
'Установка Параметров страниц
    For Each oSec In ActiveDocument.Sections
        With oSec.PageSetup
            .PaperSize = wdPaperA4
            .Orientation = wdOrientLandscape
            .Gutter = CentimetersToPoints(0)
            .TopMargin = CentimetersToPoints(0.8)
            .BottomMargin = CentimetersToPoints(0.8)
            .LeftMargin = CentimetersToPoints(0.8)
            .RightMargin = CentimetersToPoints(0.8)
            
            .FirstPageTray = wdPrinterDefaultBin
            .OtherPagesTray = wdPrinterDefaultBin
            .OddAndEvenPagesHeaderFooter = False
            .DifferentFirstPageHeaderFooter = False
            .HeaderDistance = CentimetersToPoints(0.1)
            .FooterDistance = CentimetersToPoints(0.1)
            .VerticalAlignment = wdAlignVerticalTop
        End With
    Next
'Удаляем Гиперссылки во Всём документе
    'в Основном документе
        Do While ActiveDocument.Hyperlinks.Count <> 0
            ActiveDocument.Hyperlinks(1).Delete
        Loop
    'в Сносках
        For Each oFootnote In ActiveDocument.footnotes
            Do While oFootnote.Range.Hyperlinks.Count <> 0
                oFootnote.Range.Hyperlinks(1).Delete
            Loop
        Next
'Удаляем колонтитулы и делаем нумерацию страниц "Продолжить"
    For Each oSec In ActiveDocument.Sections
        For Each oHeader In oSec.Headers
            oHeader.Range.Delete
        Next oHeader
        For Each oFooter In oSec.Footers
            oFooter.Range.Delete
            oFooter.PageNumbers.RestartNumberingAtSection = False
        Next oFooter
    Next oSec
'Не показываем скрытый текст, т.к. не удаётся от него избавиться с помощью макросов
    With ActiveWindow
        With .View
            .ShowTabs = True
            .ShowSpaces = True
            .ShowParagraphs = True
            .ShowHyphens = True
            .ShowHiddenText = False
            .ShowAll = False
        End With
    End With
'Переходим в Режим разметки
    ActiveWindow.View.Type = wdPrintView
'--------------------------------------------------------------------------------------------------------------------------
'Форматирование Таблиц
 
    For Each oTable In ActiveDocument.Tables
        oTable.Rows.WrapAroundText = False
        oTable.Rows.Alignment = wdAlignRowCenter
        oTable.AutoFitBehavior (wdAutoFitWindow)
        oTable.Rows.HeightRule = wdRowHeightAuto 'Убирает галочку "Высота строки"
    Next
ActiveDocument.Tables(2).Rows(3).Delete
ActiveDocument.Tables(3).Delete
ActiveDocument.Tables(3).Rows(3).Delete
ActiveDocument.Tables(4).Rows(3).Delete
ActiveDocument.Tables(5).Delete
ActiveDocument.Tables(5).Rows(3).Delete
End Sub



0



0 / 0 / 0

Регистрация: 10.05.2010

Сообщений: 10

11.05.2010, 03:51

 [ТС]

5

Спасаибо огромное!!!!!! Всё работает как надо!!!! Как я могу отблагодарить???

Добавлено через 47 минут
Можно ещё, чтобы данные в таблицах были шрифта 8 жирного, а всё остальное — 6. И отступ сверху 2 см, т.к. документ подшивается.

Добавлено через 38 минут
И ещё, чтобы номер в названии(самая первая строка) был тоже 8 шрифтом. Спасибо большое!!!!

Добавлено через 2 минуты
Word 2007. А по поводу левого и правого поля не принципиально. Не важно сколько будет отступ, лишь бы всё уместилось на одной странице.



0



Busine2009

Заблокирован

11.05.2010, 05:55

6

faiza,
из-за верхнего поля шрифт пришлось уменьшать до 7 пт:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
Sub m_1()
Dim response As String
Dim oTable As Table
Dim oSec As Section
Dim oFootnote As Footnote
Dim oHeader As HeaderFooter
Dim oFooter As HeaderFooter
'Размер шрифта
    ActiveDocument.Range.Font.Size = 7
'Копия документа
    response = MsgBox("Есть копия данного документа?", vbCritical + vbYesNo, "Предупреждение")
        If response = vbNo Then
            Exit Sub
        End If
'Принять все Изменения
    ActiveDocument.AcceptAllRevisions
    
'Обычный режим
    ActiveWindow.View.Type = wdNormalView
'Шрифт
    ActiveDocument.Range.Font.Name = "Times New Roman"
'Одинарный междустрочный интервал
    ActiveDocument.Range.ParagraphFormat.Space1
'Во всём документе Основной текст (не Уровень 1, Уровень 2 и т.д.)
    ActiveDocument.Range.Paragraphs.OutlineLevel = wdOutlineLevelBodyText
'Перевод Таблиц из висячего положения в положение, что они в тексте
    For Each oTable In ActiveDocument.Tables
        oTable.Rows.WrapAroundText = False
    Next
'Удаляем в 2 этапа все разрывы разделов
    If ActiveDocument.Sections.Count > 1 Then
        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = "^b"
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .Execute
        End With
        Selection.MoveLeft
        Selection.TypeParagraph
        Do While Selection.Sections(1).Index <> ActiveDocument.Sections.Count - 1
            Application.Browser.Next
            Application.Browser.Next
            Selection.MoveLeft
            Selection.TypeParagraph
        Loop
        
        Selection.HomeKey unit:=wdStory
            
        With Selection.Find
            .Text = "^b"
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            While .Execute
                .Parent.Delete
            Wend
        End With
    End If
'Удаляем Разрывы страниц
    With ActiveDocument.Range.Find
        .Text = "^m"
        .Replacement.Text = "^p"
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
'Установка Параметров страниц
    For Each oSec In ActiveDocument.Sections
        With oSec.PageSetup
            .PaperSize = wdPaperA4
            .Orientation = wdOrientLandscape
            .Gutter = CentimetersToPoints(0)
            .TopMargin = CentimetersToPoints(2)
            .BottomMargin = CentimetersToPoints(0.8)
            .LeftMargin = CentimetersToPoints(0.8)
            .RightMargin = CentimetersToPoints(0.8)
            
            .FirstPageTray = wdPrinterDefaultBin
            .OtherPagesTray = wdPrinterDefaultBin
            .OddAndEvenPagesHeaderFooter = False
            .DifferentFirstPageHeaderFooter = False
            .HeaderDistance = CentimetersToPoints(0.1)
            .FooterDistance = CentimetersToPoints(0.1)
            .VerticalAlignment = wdAlignVerticalTop
        End With
    Next
'Удаляем Гиперссылки во Всём документе
    'в Основном документе
        Do While ActiveDocument.Hyperlinks.Count <> 0
            ActiveDocument.Hyperlinks(1).Delete
        Loop
    'в Сносках
        For Each oFootnote In ActiveDocument.footnotes
            Do While oFootnote.Range.Hyperlinks.Count <> 0
                oFootnote.Range.Hyperlinks(1).Delete
            Loop
        Next
'Удаляем колонтитулы и делаем нумерацию страниц "Продолжить"
    For Each oSec In ActiveDocument.Sections
        For Each oHeader In oSec.Headers
            oHeader.Range.Delete
        Next oHeader
        For Each oFooter In oSec.Footers
            oFooter.Range.Delete
            oFooter.PageNumbers.RestartNumberingAtSection = False
        Next oFooter
    Next oSec
'Не показываем скрытый текст, т.к. не удаётся от него избавиться с помощью макросов
    With ActiveWindow
        With .View
            .ShowTabs = True
            .ShowSpaces = True
            .ShowParagraphs = True
            .ShowHyphens = True
            .ShowHiddenText = False
            .ShowAll = False
        End With
    End With
'Переходим в Режим разметки
    ActiveWindow.View.Type = wdPrintView
'--------------------------------------------------------------------------------------------------------------------------
'Форматирование Таблиц
 
'Форматирование всех таблиц
    For Each oTable In ActiveDocument.Tables
        oTable.Rows.WrapAroundText = False
        oTable.Rows.Alignment = wdAlignRowCenter
        oTable.AutoFitBehavior (wdAutoFitWindow)
        oTable.Rows.HeightRule = wdRowHeightAuto 'Убирает галочку "Высота строки"
    Next
ActiveDocument.Tables(2).Rows(3).Delete
ActiveDocument.Tables(3).Delete
ActiveDocument.Tables(3).Rows(3).Delete
ActiveDocument.Tables(4).Rows(3).Delete
ActiveDocument.Tables(5).Delete
ActiveDocument.Tables(5).Rows(3).Delete
ActiveDocument.Tables(5).AutoFitBehavior (wdAutoFitWindow)
'Анимируем текст во всех Таблицах
    For Each oTable In ActiveDocument.Tables
        oTable.Range.FormattedText.Font.Animation = wdAnimationMarchingRedAnts
        oTable.Range.Font.Bold = True
    Next
'Шрифт вне Таблиц 6 пт
    With ActiveDocument.Range.Find
        .Text = ""
        .Replacement.Text = ""
        .Font.Animation = wdAnimationNone
        .Replacement.Font.Size = 5
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
For Each oTable In ActiveDocument.Tables
    oTable.Range.FormattedText.Font.Animation = wdAnimationNone
Next
End Sub

По поводу отблагодарить. Если макрос действительно помог, то можешь выслать мне денег на мой кошелёк. А можешь просто отписаться, помог макрос или нет. Или скажи «Спасибо».



1



0 / 0 / 0

Регистрация: 10.05.2010

Сообщений: 10

11.05.2010, 08:42

 [ТС]

7

При выполнении выдаёт ошибку:»Отсутствует доступ к отдельным строкам, поскольку таблица имеет ячейки, объединённые по вертикали». Что делать???

Миниатюры

Форматирование таблиц в Word
 

Форматирование таблиц в Word
 



0



0 / 0 / 0

Регистрация: 10.05.2010

Сообщений: 10

11.05.2010, 08:46

 [ТС]

8

Напиши как и куда закинуть «благодарность» ))) Просто мне же за это платят, а я не сама сделала, так что эти деньги должны быть в заслуженном кошельке))))



0



0 / 0 / 0

Регистрация: 10.05.2010

Сообщений: 10

11.05.2010, 09:12

 [ТС]

9

В результате должно получиться как-то как…



0



Busine2009

Заблокирован

12.05.2010, 20:18

10

faiza,
да, я понял ошибку, получается, что файлы отличаются между собой. В этом случае надо придумать что-то другое, но я бухой сейчас, поэтому тяжело сообразить.
Раз я не смог помочь тебе, то мне не нужна благодарность.
Есть вариант — удаление строк в таблицах с нумерацией колонок вручную, т.е. вывести на панель инструментов кнопку по удалению строк таблиц. Для этого надо вставить в таблицу курсор, а затем применить макрос.

Добавлено через 23 часа 32 минуты
faiza,
вот так можно удалить скрытый текст:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub m_1()
'Удаляем в 2 этапа скрытый текст (просто так не получается удалить)
'Анимируем скрытй текст
With ActiveDocument.Range.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = ""
    .Replacement.Text = ""
    .Format = True
    .Font.Hidden = True
    .Replacement.Font.Animation = wdAnimationSparkleText
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Execute Replace:=wdReplaceAll
End With
'Удаляем Анимированный текст (он же - скрытый)
With ActiveDocument.Range.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = ""
    .Replacement.Text = ""
    .Format = True
    .Font.Animation = wdAnimationSparkleText
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Execute Replace:=wdReplaceAll
End With
End Sub



0



babkakoshka

1 / 1 / 0

Регистрация: 14.09.2010

Сообщений: 47

14.09.2010, 15:16

11

Цитата
Сообщение от Busine2009
Посмотреть сообщение

faiza,
из-за верхнего поля шрифт пришлось уменьшать до 7 пт:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
Sub m_1()
Dim response As String
Dim oTable As Table
Dim oSec As Section
Dim oFootnote As Footnote
Dim oHeader As HeaderFooter
Dim oFooter As HeaderFooter
'Размер шрифта
    ActiveDocument.Range.Font.Size = 7
'Копия документа
    response = MsgBox("Есть копия данного документа?", vbCritical + vbYesNo, "Предупреждение")
        If response = vbNo Then
            Exit Sub
        End If
'Принять все Изменения
    ActiveDocument.AcceptAllRevisions
    
'Обычный режим
    ActiveWindow.View.Type = wdNormalView
'Шрифт
    ActiveDocument.Range.Font.Name = "Times New Roman"
'Одинарный междустрочный интервал
    ActiveDocument.Range.ParagraphFormat.Space1
'Во всём документе Основной текст (не Уровень 1, Уровень 2 и т.д.)
    ActiveDocument.Range.Paragraphs.OutlineLevel = wdOutlineLevelBodyText
'Перевод Таблиц из висячего положения в положение, что они в тексте
    For Each oTable In ActiveDocument.Tables
        oTable.Rows.WrapAroundText = False
    Next
'Удаляем в 2 этапа все разрывы разделов
    If ActiveDocument.Sections.Count > 1 Then
        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = "^b"
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .Execute
        End With
        Selection.MoveLeft
        Selection.TypeParagraph
        Do While Selection.Sections(1).Index <> ActiveDocument.Sections.Count - 1
            Application.Browser.Next
            Application.Browser.Next
            Selection.MoveLeft
            Selection.TypeParagraph
        Loop
        
        Selection.HomeKey unit:=wdStory
            
        With Selection.Find
            .Text = "^b"
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            While .Execute
                .Parent.Delete
            Wend
        End With
    End If
'Удаляем Разрывы страниц
    With ActiveDocument.Range.Find
        .Text = "^m"
        .Replacement.Text = "^p"
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
'Установка Параметров страниц
    For Each oSec In ActiveDocument.Sections
        With oSec.PageSetup
            .PaperSize = wdPaperA4
            .Orientation = wdOrientLandscape
            .Gutter = CentimetersToPoints(0)
            .TopMargin = CentimetersToPoints(2)
            .BottomMargin = CentimetersToPoints(0.8)
            .LeftMargin = CentimetersToPoints(0.8)
            .RightMargin = CentimetersToPoints(0.8)
            
            .FirstPageTray = wdPrinterDefaultBin
            .OtherPagesTray = wdPrinterDefaultBin
            .OddAndEvenPagesHeaderFooter = False
            .DifferentFirstPageHeaderFooter = False
            .HeaderDistance = CentimetersToPoints(0.1)
            .FooterDistance = CentimetersToPoints(0.1)
            .VerticalAlignment = wdAlignVerticalTop
        End With
    Next
'Удаляем Гиперссылки во Всём документе
    'в Основном документе
        Do While ActiveDocument.Hyperlinks.Count <> 0
            ActiveDocument.Hyperlinks(1).Delete
        Loop
    'в Сносках
        For Each oFootnote In ActiveDocument.footnotes
            Do While oFootnote.Range.Hyperlinks.Count <> 0
                oFootnote.Range.Hyperlinks(1).Delete
            Loop
        Next
'Удаляем колонтитулы и делаем нумерацию страниц "Продолжить"
    For Each oSec In ActiveDocument.Sections
        For Each oHeader In oSec.Headers
            oHeader.Range.Delete
        Next oHeader
        For Each oFooter In oSec.Footers
            oFooter.Range.Delete
            oFooter.PageNumbers.RestartNumberingAtSection = False
        Next oFooter
    Next oSec
'Не показываем скрытый текст, т.к. не удаётся от него избавиться с помощью макросов
    With ActiveWindow
        With .View
            .ShowTabs = True
            .ShowSpaces = True
            .ShowParagraphs = True
            .ShowHyphens = True
            .ShowHiddenText = False
            .ShowAll = False
        End With
    End With
'Переходим в Режим разметки
    ActiveWindow.View.Type = wdPrintView
'--------------------------------------------------------------------------------------------------------------------------
'Форматирование Таблиц
 
'Форматирование всех таблиц
    For Each oTable In ActiveDocument.Tables
        oTable.Rows.WrapAroundText = False
        oTable.Rows.Alignment = wdAlignRowCenter
        oTable.AutoFitBehavior (wdAutoFitWindow)
        oTable.Rows.HeightRule = wdRowHeightAuto 'Убирает галочку "Высота строки"
    Next
ActiveDocument.Tables(2).Rows(3).Delete
ActiveDocument.Tables(3).Delete
ActiveDocument.Tables(3).Rows(3).Delete
ActiveDocument.Tables(4).Rows(3).Delete
ActiveDocument.Tables(5).Delete
ActiveDocument.Tables(5).Rows(3).Delete
ActiveDocument.Tables(5).AutoFitBehavior (wdAutoFitWindow)
'Анимируем текст во всех Таблицах
    For Each oTable In ActiveDocument.Tables
        oTable.Range.FormattedText.Font.Animation = wdAnimationMarchingRedAnts
        oTable.Range.Font.Bold = True
    Next
'Шрифт вне Таблиц 6 пт
    With ActiveDocument.Range.Find
        .Text = ""
        .Replacement.Text = ""
        .Font.Animation = wdAnimationNone
        .Replacement.Font.Size = 5
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
For Each oTable In ActiveDocument.Tables
    oTable.Range.FormattedText.Font.Animation = wdAnimationNone
Next
End Sub

По поводу отблагодарить. Если макрос действительно помог, то можешь выслать мне денег на мой кошелёк. А можешь просто отписаться, помог макрос или нет. Или скажи «Спасибо».

Добрый день. Буквально недавно столкнулась с подобной проблемой — срочно огромное количество таблиц (сделанных не очень-то качественно) необходимо было уменьшить, чтобы уместились на одной странице две таблицы на двух языках…Не думала, что можно как-то автоматически решить эту проблему…Оказывается — есть таланты!!!Спасибо Вам! С макросом еще не совсем разобралась, может, неправильно поставила в WORD. А сложно ли написать код (документ высылаю), чтобы нажатием кнопки табличка уменьшилась вдвое?

Вложения

Тип файла: zip СМЕТА 9.zip (9.0 Кб, 129 просмотров)



0



Busine2009

Заблокирован

14.09.2010, 20:35

12

babkakoshka,
т.е. смысл в чём? Есть таблица на одной странице. Надо сделать так, чтобы эта же самая таблица (таблица на первой странице во вложенном файле) была 2 раза на одной странице (вторая страница во вложенном файле)?
Если так, то мне нужны следующие данные:

  1. Поля в документе (Файл — Параметры страницы — Поля).
  2. Расстояние до колонтитулов (Файл — Параметры страницы — Источник бумаги.
  3. Название шрифта и допустимый его размер.

Ну и всё пока вроде.



1



1 / 1 / 0

Регистрация: 14.09.2010

Сообщений: 47

15.09.2010, 10:10

13

Поля могут быть уменьшены максимально, т.е. 1 или 0,5 — левое и правое,как уж получится, нижнее и верхнее поле — могут быть по 1 или 1, 5; размер бумаги — А4, колонтитулов вообще не надо. Шрифт — 7-8, Times New Roman, можна немножко уплотнить, если содержимое строки этого требует.



0



Busine2009

Заблокирован

15.09.2010, 20:12

14

babkakoshka,
Опишите, какие вы делаете действия от А до Я.
Также опишите документы, с которыми работаете: что в них содержится.

Вот код для обработки одной таблицы:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub m_1() 'обработка одной таблицы
If Selection.Information(wdWithInTable) = False Then
    MsgBox "Вставьте курсор в таблицу"
End If
With Selection.Tables(1) 'уменьшение левого и право полей в ячейках - чтобы для текста было больше места
    .LeftPadding = CentimetersToPoints(0.05)
    .RightPadding = CentimetersToPoints(0.05)
End With
With Selection.Tables(1) 'ширина таблицы 9 см
    .PreferredWidthType = wdPreferredWidthPoints
    .PreferredWidth = CentimetersToPoints(9)
End With
Selection.Tables(1).Range.Font.Size = 8 'размер шрифта 8 пт
End Sub

Вот код для обработки всех таблиц в одном документе:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub m_2() 'обработка всех таблиц в одном документе
Dim oTable As Table
Dim response As String
response = MsgBox("Обработать все таблицы?", vbCritical + vbYesNo) 'Чтобы случайно не запустить макрос
    If response = vbNo Then Exit Sub
For Each oTable In ActiveDocument.Tables
    oTable.LeftPadding = CentimetersToPoints(0.05)
    oTable.RightPadding = CentimetersToPoints(0.05)
    oTable.PreferredWidthType = wdPreferredWidthPoints
    oTable.PreferredWidth = CentimetersToPoints(9)
    oTable.Range.Font.Size = 8
Next
End Sub

Если макрос по обработке всё же запустился, а это не надо, то прервать действие макроса можно остановить Ctrl + Pause (Break).

Напишите, если каких-то команд по обработке таблиц не хватает.



1



babkakoshka

1 / 1 / 0

Регистрация: 14.09.2010

Сообщений: 47

16.09.2010, 12:48

15

Цитата
Сообщение от Busine2009
Посмотреть сообщение

babkakoshka,
Опишите, какие вы делаете действия от А до Я.
Также опишите документы, с которыми работаете: что в них содержится.

Вот код для обработки одной таблицы:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub m_1() 'обработка одной таблицы
If Selection.Information(wdWithInTable) = False Then
    MsgBox "Вставьте курсор в таблицу"
End If
With Selection.Tables(1) 'уменьшение левого и право полей в ячейках - чтобы для текста было больше места
    .LeftPadding = CentimetersToPoints(0.05)
    .RightPadding = CentimetersToPoints(0.05)
End With
With Selection.Tables(1) 'ширина таблицы 9 см
    .PreferredWidthType = wdPreferredWidthPoints
    .PreferredWidth = CentimetersToPoints(9)
End With
Selection.Tables(1).Range.Font.Size = 8 'размер шрифта 8 пт
End Sub

Вот код для обработки всех таблиц в одном документе:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub m_2() 'обработка всех таблиц в одном документе
Dim oTable As Table
Dim response As String
response = MsgBox("Обработать все таблицы?", vbCritical + vbYesNo) 'Чтобы случайно не запустить макрос
    If response = vbNo Then Exit Sub
For Each oTable In ActiveDocument.Tables
    oTable.LeftPadding = CentimetersToPoints(0.05)
    oTable.RightPadding = CentimetersToPoints(0.05)
    oTable.PreferredWidthType = wdPreferredWidthPoints
    oTable.PreferredWidth = CentimetersToPoints(9)
    oTable.Range.Font.Size = 8
Next
End Sub

Если макрос по обработке всё же запустился, а это не надо, то прервать действие макроса можно остановить Ctrl + Pause (Break).

Напишите, если каких-то команд по обработке таблиц не хватает.

Спасибо! Пока я — в диком восторге!!! А обрабатывать приходится всякие таблицы: подсчет запасов полезных ископ., каталог координат и т.п., так что сразу и не опишешь…Пока что сразу не скажу, какие еще команды нужны. Спасибо огромное!



0



Busine2009

Заблокирован

17.09.2010, 08:15

16

babkakoshka,
в этом коде была ошибка. Вот так должно быть:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub m_1() 'обработка одной таблицы
If Selection.Information(wdWithInTable) = False Then
    MsgBox "Вставьте курсор в таблицу"
    Exit Sub
End If
With Selection.Tables(1) 'уменьшение левого и право полей в ячейках - чтобы для текста было больше места
    .LeftPadding = CentimetersToPoints(0.05)
    .RightPadding = CentimetersToPoints(0.05)
End With
With Selection.Tables(1) 'ширина таблицы 9 см
    .PreferredWidthType = wdPreferredWidthPoints
    .PreferredWidth = CentimetersToPoints(9)
End With
Selection.Tables(1).Range.Font.Size = 8 'размер шрифта 8 пт
End Sub



2



1 / 1 / 0

Регистрация: 14.09.2010

Сообщений: 47

17.09.2010, 11:28

17

Насчет ошибки я еще не совсемь поняла… Но исправила код и теперь — все, как надо. И вообще, это — высший пилотаж! Я даже не подозревала, что такое существует, т.к. в основном работаю в Autocad. Спасибо Вам большое!



1



Busine2009

Заблокирован

17.09.2010, 22:16

18

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



1



I want to create a Word macro that can do the following task at a single click.
Please help me.
I have a large document that’s a trouble for me.

The task includes a table formatting such as

table width 11 cm,
left aligned,
font TNR 10,
border black,
indent from left is zero.

Martijn Pieters's user avatar

asked Jan 21, 2017 at 3:22

rairkz's user avatar

1

I got the macro code….
Thanks..

Sub Macro1()

With Selection.tables(1)
    .Rows.HeightRule = wdRowHeightAuto
    .PreferredWidthType = wdPreferredWidthPoints
    .PreferredWidth = CentimetersToPoints(11)
End With


With Selection.Borders(wdBorderTop)
    .LineStyle = Options.DefaultBorderLineStyle
    .LineWidth = Options.DefaultBorderLineWidth
    .Color = Options.DefaultBorderColor

End With
With Selection.Borders(wdBorderLeft)
    .LineStyle = Options.DefaultBorderLineStyle
    .LineWidth = Options.DefaultBorderLineWidth
    .Color = Options.DefaultBorderColor
End With
With Selection.Borders(wdBorderBottom)
    .LineStyle = Options.DefaultBorderLineStyle
    .LineWidth = Options.DefaultBorderLineWidth
    .Color = Options.DefaultBorderColor
End With
With Selection.Borders(wdBorderRight)
    .LineStyle = Options.DefaultBorderLineStyle
    .LineWidth = Options.DefaultBorderLineWidth
    .Color = Options.DefaultBorderColor
End With
With Selection.Borders(wdBorderVertical)
    .LineStyle = Options.DefaultBorderLineStyle
    .LineWidth = Options.DefaultBorderLineWidth
    .Color = Options.DefaultBorderColor
End With
    With Selection.Borders(wdBorderHorizontal)
    .LineStyle = Options.DefaultBorderLineStyle
    .LineWidth = Options.DefaultBorderLineWidth
    .Color = Options.DefaultBorderColor
End With
Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
With Selection.ParagraphFormat
    .LeftIndent = CentimetersToPoints(0)
    .RightIndent = CentimetersToPoints(0)
    .SpaceBefore = 0
    .SpaceBeforeAuto = False
    .SpaceAfter = 0
    .SpaceAfterAuto = False
    .LineSpacingRule = wdLineSpaceSingle
    .Alignment = wdAlignParagraphLeft
    .WidowControl = True
    .KeepWithNext = False
    .KeepTogether = False
    .PageBreakBefore = False
    .NoLineNumber = False
    .Hyphenation = True
    .FirstLineIndent = CentimetersToPoints(0)
    .OutlineLevel = wdOutlineLevelBodyText
    .CharacterUnitLeftIndent = 0
    .CharacterUnitRightIndent = 0
    .CharacterUnitFirstLineIndent = 0
    .LineUnitBefore = 0
    .LineUnitAfter = 0
    .MirrorIndents = False
    .TextboxTightWrap = wdTightNone
    .CollapsedByDefault = False
End With
With Selection.ParagraphFormat
    .LeftIndent = CentimetersToPoints(0)
    .RightIndent = CentimetersToPoints(0)
    .SpaceBefore = 0
    .SpaceBeforeAuto = False
    .SpaceAfter = 0
    .SpaceAfterAuto = False
    .LineSpacingRule = wdLineSpaceSingle
    .Alignment = wdAlignParagraphLeft
    .WidowControl = True
    .KeepWithNext = False
    .KeepTogether = False
    .PageBreakBefore = False
    .NoLineNumber = False
    .Hyphenation = True
    .FirstLineIndent = CentimetersToPoints(0)
    .OutlineLevel = wdOutlineLevelBodyText
    .CharacterUnitLeftIndent = 0
    .CharacterUnitRightIndent = 0
    .CharacterUnitFirstLineIndent = 0
    .LineUnitBefore = 0
    .LineUnitAfter = 0
    .MirrorIndents = False
    .TextboxTightWrap = wdTightNone
    .CollapsedByDefault = False
End With

    With Selection.tables(1).Rows
    .Alignment = wdAlignRowLeft
    .AllowBreakAcrossPages = True
    .SetLeftIndent LeftIndent:=CentimetersToPoints(0), RulerStyle:= _
        wdAdjustNone
End With

End Sub

answered Jan 22, 2017 at 5:56

rairkz's user avatar

rairkzrairkz

31 silver badge7 bronze badges

Блог Антона Палихова

Блог Антона Палихова

Excel, Word, OneNote, книжки, D&D, Roll20, Discord, анализ, оптимизация, развлечения

Для редактирования документа для dmsguild из-за своей лени накропал макрос по форматированию всех таблиц в документе.

Sub AllTableFormatting()
Dim pT As Word.Table
For Each pT In ActiveDocument.Tables
pT.Style = "Стиль1"
pT.ApplyStyleHeadingRows = Not pT. _
ApplyStyleHeadingRows
pT.ApplyStyleFirstColumn = Not pT. _
ApplyStyleFirstColumn
pT.Range.Style = ActiveDocument.Styles("Table Text")
Next
End Sub


Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Макрос форматирования всех таблиц в документе

Страницы 1

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

Сообщений [ 3 ]

1 05.01.2017 23:30:46

  • Natick_K
  • рядовой
  • Неактивен
  • Зарегистрирован: 04.01.2017
  • Сообщений: 2

Тема: Макрос форматирования всех таблиц в документе

Добрый день! Помогите, пожалуйста, создать макрос для форматирования всех таблиц в документе.
Нужно, чтобы они размещались по ширине страницы и имели такие же параметры, как текст: верхнее и нижнее поле — 2 см, левое 3 см, правое 1,5 см.
Есть такой макрос, который задает нужные параметры всем таблицам, а именно: шрифт Times New Roman, 10, междустрочный интервал 1.5, выравнивание таблицы и текста в ней по ширине. А вот как дописать, чтобы у таблицы были параметры полей, как у текста не знаю. Помогите, пожалуйста.

Sub т1()

‘ т1 Макрос


2 Dim oTable As Table
3 For Each oTable In ActiveDocument.Tables
4 oTable.Select
5 Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
6 With Selection.Tables(1).Borders
7 .InsideLineStyle = wdLineStyleSingle
8 .InsideLineWidth = wdLineWidth050pt
9 .InsideColor = wdColorAutomatic
10 .InsideLineStyle = wdLineStyleSingle
11 .OutsideLineWidth = wdLineWidth050pt
12 .OutsideColor = wdColorAutomatic
13 End With
14 With Selection.ParagraphFormat
15 .LeftIndent = CentimetersToPoints(0)
16 .RightIndent = CentimetersToPoints(0)
17 .SpaceBefore = 0
18 .SpaceBeforeAuto = False
19 .SpaceAfter = 0
20 .SpaceAfterAuto = False
21 .LineSpacingRule = wdLineSpace1pt5
22 .Alignment = wdAlignParagraphJustify
23 .WidowControl = True
24 .KeepWithNext = False
25 .KeepTogether = False
26 .PageBreakBefore = False
27 .NoLineNumber = False
28 .Hyphenation = True
29 .FirstLineIndent = CentimetersToPoints(0)
30 End With
31 With Selection.Font
32 .Name = «Times New Roman»
33 .Size = 10
34 .Bold = False
35 .Italic = False
36 .Underline = wdUnderlineNone
37 .UnderlineColor = wdColorAutomatic
38 .StrikeThrough = False
39 .DoubleStrikeThrough = False
40 .Outline = False
41 .Emboss = False
42 .Shadow = False
43 .Hidden = False
44 .SmallCaps = False
45 .AllCaps = False
46 .Color = wdColorAutomatic
47 .Engrave = False
48 .Superscript = False
49 .Subscript = False
50 .Spacing = 0
51 .Scaling = 100
52 .Position = 0
53 .Kerning = 0
54 .Animation = wdAnimationNone
55 End With
56 Next
57 End Sub

2 Ответ от Fck_This 06.01.2017 10:14:38

  • Макрос форматирования всех таблиц в документе
  • Fck_This
  • генерал-полковник
  • Неактивен
  • Откуда: Минск, Беларусь
  • Зарегистрирован: 13.07.2016
  • Сообщений: 648
  • Поблагодарили: 97
  • За сообщение: 1

Re: Макрос форматирования всех таблиц в документе

Natick_K пишет:

Добрый день! Помогите, пожалуйста, создать макрос для форматирования всех таблиц в документе.
Нужно, чтобы они размещались по ширине страницы и имели такие же параметры, как текст: верхнее и нижнее поле — 2 см, левое 3 см, правое 1,5 см.
Есть такой макрос, который задает нужные параметры всем таблицам, а именно: шрифт Times New Roman, 10, междустрочный интервал 1.5, выравнивание таблицы и текста в ней по ширине. А вот как дописать, чтобы у таблицы были параметры полей, как у текста не знаю. Помогите, пожалуйста.

Sub т1()

‘ т1 Макрос


2 Dim oTable As Table
3 For Each oTable In ActiveDocument.Tables
4 oTable.Select
5 Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
6 With Selection.Tables(1).Borders
7 .InsideLineStyle = wdLineStyleSingle
8 .InsideLineWidth = wdLineWidth050pt
9 .InsideColor = wdColorAutomatic
10 .InsideLineStyle = wdLineStyleSingle
11 .OutsideLineWidth = wdLineWidth050pt
12 .OutsideColor = wdColorAutomatic
13 End With
14 With Selection.ParagraphFormat
15 .LeftIndent = CentimetersToPoints(0)
16 .RightIndent = CentimetersToPoints(0)
17 .SpaceBefore = 0
18 .SpaceBeforeAuto = False
19 .SpaceAfter = 0
20 .SpaceAfterAuto = False
21 .LineSpacingRule = wdLineSpace1pt5
22 .Alignment = wdAlignParagraphJustify
23 .WidowControl = True
24 .KeepWithNext = False
25 .KeepTogether = False
26 .PageBreakBefore = False
27 .NoLineNumber = False
28 .Hyphenation = True
29 .FirstLineIndent = CentimetersToPoints(0)
30 End With
31 With Selection.Font
32 .Name = «Times New Roman»
33 .Size = 10
34 .Bold = False
35 .Italic = False
36 .Underline = wdUnderlineNone
37 .UnderlineColor = wdColorAutomatic
38 .StrikeThrough = False
39 .DoubleStrikeThrough = False
40 .Outline = False
41 .Emboss = False
42 .Shadow = False
43 .Hidden = False
44 .SmallCaps = False
45 .AllCaps = False
46 .Color = wdColorAutomatic
47 .Engrave = False
48 .Superscript = False
49 .Subscript = False
50 .Spacing = 0
51 .Scaling = 100
52 .Position = 0
53 .Kerning = 0
54 .Animation = wdAnimationNone
55 End With
56 Next
57 End Sub

Для изменения левого и правого отступа использовать нужно будет такой код, но как и с вертикальным выравниванием — не понятно относительно чего. Это: слева до рамки 2см и ещё + 1 от рамки, справа — 1.5 см от рамки (это при условии, что у вас стоит стандартная ширина листа А4 в 21 см).
   

oTable.Rows.LeftIndent = CentimetersToPoints(1)
    oTable.PreferredWidthType = wdPreferredWidthPoints
    oTable.PreferredWidth = CentimetersToPoints(16.5)

Вставить его нужно где-нибудь между строками «For each oTable in activedocument.tables» и «Next».
А по поводу отступов сверху и снизу — не понял. Относительно чего у вас отступы должны быть? относительно края листа (у меня отступ 2 см стандартно, можно настраивать в параметрах страницы) или относительно текста? А если ячеек мало, они должны растягиваться до конца листа? Уточняйте пожалуйста.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

3 Ответ от Natick_K 07.01.2017 11:48:38

  • Natick_K
  • рядовой
  • Неактивен
  • Зарегистрирован: 04.01.2017
  • Сообщений: 2

Re: Макрос форматирования всех таблиц в документе

Спасибо большое! буду пробовать!

Сообщений [ 3 ]

Страницы 1

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

Похожие темы

  • Макрос для выделения всех таблиц в документе
  • Макрос для изменения высоты строк всех таблиц в документе
  • Макрос выравнивания содержимого всех ячеек всех таблиц в документе
  • Очистка форматирования в документе КРОМЕ ШРИФТОВОГО
  • Макрос для форматирования заголовка таблицы
  • Макрос форматирования текста документов
  • Макрос для форматирования текста, скопированного из интернета
  • Несколько таблиц Excel в одном документе Word

Макрос форматирования всех таблиц в документе

Как часто сталкиваемся мы с тем, что, казалось бы, вдоль и поперек изученные программы на самом деле знаем гораздо хуже, чем требуется. На портале о Microsoft Office Word вы узнаете про: как набранный текст в таблице ворда 2007 сделать в алфавитном порядке.
К примеру, Ворд, который известен и используется практически всеми, но в котором  много белых пятен для большинства. На портале о Microsoft Office Word вы узнаете про: ключ для ворд 2007 бесплатно.
Обычно это становится очевидно, когда возникает необходимость выполнить какую-то нестандартную для себя операцию. На портале о Microsoft Office Word вы узнаете про: как сохранить документ в dot или в doc.

Восполнить пробелы в знаниях о работе программы можно на форуме сайта Ворд Эксперт, где участники делятся друг с другом своими секретами и опытом работы. На портале о Microsoft Office Word вы узнаете про: нумерация с середины в таблице word.
Здесь много информации о создании шаблонов, назначении макросов для различных операций, о настройках программы. На портале о Microsoft Office Word вы узнаете про: vba количество строк в таблице содержимое.
Вам укажут путь решения возникших проблем, посоветуют литературу, предложат готовое решение. Также можно оставить заявку на любую работу, связанную с приложением. На портале о Microsoft Office Word вы узнаете про: как в вордовском файле сделать нумерацию с 3 страницы.

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

Найти стиль таблицы

Прежде чем вы сможете создать макрос, вам нужно найти имя стиля таблицы, который вы хотите применить. Это довольно просто. Откройте документ Word, для которого вы хотите изменить стили таблицы. Щелкните внутри таблицы и перейдите на вкладку «Дизайн» на вкладке «Работа с таблицами».

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

Макрос стиля таблицы

Включите вкладку «Разработчик» в Word, выбрав «Файл»> «Параметры»> «Настроить ленту». Включите панель инструментов разработчика, а затем вернитесь к своему документу.

На вкладке Разработчик щелкните Макросы. Дайте ему следующее имя;

ApplyTableStyle

Нажмите «Создать» и введите следующее в поле кода, однако вам необходимо отредактировать эту строку: tbl.Style = «Среднее затенение 2 — Акцент 1». Замените бит внутри кавычек именем стиля таблицы, который вы скопировали на предыдущем шаге. Не удаляйте кавычки из кода. Просто введите имя стиля таблицы и запустите его.

Sub ApplyTableStyle()
Dim tbl As Table
For Each tbl In ActiveDocument.Tables
tbl.Style = "Medium Shading 2 - Accent 1"
Next
End Sub

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

Если вам когда-нибудь понадобится изменить стиль, к которому применяется макрос, вам нужно будет отредактировать код и заменить имя стиля, который вы хотите применить. Макрос применяет стили ко всем текущим и всем новым таблицам в документе. Очевидно, это было бы проще, если бы в Microsoft Word была встроенная опция для этого. Это кажется странным недостатком для приложения.

Формулировка задачи:

Здравствуйте! У меня есть куча документов с таблицами на 3 листа. Нужно, чтобы по нажатию кнопки всё содержимое отформатировалось(уменьшился шрифт, уменьшилась высота строк, удалились разрывы страниц и содержимое колонтитулов и т.д). Т.е. всё должно уместиться на одном листе! Все документы одинаковые. Пример документа, кидаю. Заранее благодарю!!!!

Код к задаче: «Форматирование таблиц в Word»

textual

Sub m_2() 'обработка всех таблиц в одном документе
Dim oTable As Table
Dim response As String
response = MsgBox("Обработать все таблицы?", vbCritical + vbYesNo) 'Чтобы случайно не запустить макрос
    If response = vbNo Then Exit Sub
For Each oTable In ActiveDocument.Tables
    oTable.LeftPadding = CentimetersToPoints(0.05)
    oTable.RightPadding = CentimetersToPoints(0.05)
    oTable.PreferredWidthType = wdPreferredWidthPoints
    oTable.PreferredWidth = CentimetersToPoints(9)
    oTable.Range.Font.Size = 8
Next
End Sub

Полезно ли:

12   голосов , оценка 4.083 из 5

Понравилась статья? Поделить с друзьями:
  • Макрос для форматирования таблиц в excel
  • Макрос для флажка excel
  • Макрос для условного форматирования в excel
  • Макрос для удаления файла excel
  • Макрос для удаления строк по значению в excel