Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/37: Рейтинг темы: голосов - 37, средняя оценка - 4.84
-1 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 75

Редактирование таблиц в WOrD

30.05.2011, 17:34. Показов 7442. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно уменьшить время форматирования таблиц ? В данный момент макрос перебирает каждую строку, хотя необходимо, чтобы производилось отдельное форматирование только первой и второй строки, если объединены ячейки, а форматирование остальной таблицы производилось не по каждой строке .. А то времени очень много занимает ..... СПАСИБО ОгРомНОЕ !!!!

Вот исходный код :
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
Sub Change_Table_Formatting(Tbl As Word.Table)
    Tbl.Select
    With Tbl
        .Style = "Format"
    End With
    Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
    Selection.Rows.AllowBreakAcrossPages = False
    
     For Each oTable In ActiveDocument.Tables
        oTable.Rows.WrapAroundText = False
         oTable.AutoFitBehavior (wdAutoFitWindow)
          oTable.Rows.HeightRule = wdRowHeightAuto
          
    Next
          With Selection.Font
        .Name = "Arial"
        .Size = 9
        .Color = wdColorAutomatic
    End With
        Tbl.Cell(1, 1).Select
        Selection.SelectRow
    With Selection.Range.Font
 .Color = wdColorWhite
   .Name = "Arial"
.Bold = True
.Size = 9
.AllCaps = False
End With
 
    With Options
        .DefaultBorderColor = wdColorAutomatic
    End With
End Sub
 
Public Sub Format_Tables()
  Dim Table As Word.Table
  For Each Table In ActiveDocument.Tables
    Call Change_Table_Formatting(Table)
  Next Table
End Sub
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.05.2011, 17:34
Ответы с готовыми решениями:

Word: макрос для таблиц. Отформатировать определенный вид таблиц
В документе два вида таблиц. Первый тип таблиц имеет вертикальную шапку сбоку (левый столбец) и состоит она всегда из двух столбцов. Второй...

Редактирование документа word
Доброго дня, в цикле создается n-документов word, мне необходимо эти документы не создавать по отдельности, а добавлять в один. Спасибо.

Поиск и редактирование текста в Word
Народ, помогите со следующей проблемкой. Пытаюсь написать код в VBA для обработки документа. Задача такова: нужно искать в тексте...

6
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
30.05.2011, 19:39
А сколько занимает времени?
0
-1 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 75
31.05.2011, 10:21  [ТС]
В зависимости от количества таблиц, ориентировочно 40 таблиц обрабатываются минут 20 - 30.
0
245 / 55 / 6
Регистрация: 05.08.2010
Сообщений: 222
31.05.2011, 10:43
попробуй без селектов и с отключенным обновлением экрана
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
Sub Change_Table_Formatting(Tbl As Word.Table)
    Application.ScreenUpdating = False
    With Tbl
       .style = "Format"
       .ParagraphFormat.Alignment = wdAlignParagraphLeft
       .Rows.AllowBreakAcrossPages = False
    End With
    For Each oTable In ActiveDocument.Tables
        oTable.Rows.WrapAroundText = False
        oTable.AutoFitBehavior (wdAutoFitWindow)
        oTable.Rows.HeightRule = wdRowHeightAuto
    Next
    With Tbl.Font
        .name = "Arial"
        .size = 9
        .color = wdColorAutomatic
    End With
    
    
    With Tbl.cell(1, 1).EntireRow.Range.Font
        .color = wdColorWhite
        .name = "Arial"
        .bold = True
        .size = 9
        .Allcaps = False
    End With
    With Options
        .DefaultBorderColor = wdColorAutomatic
    End With
    Application.ScreenUpdating = True
End Sub
 
Public Sub Format_Tables()
    Dim Table As Word.Table
    For Each Table In ActiveDocument.Tables
        Call Change_Table_Formatting(Table)
    Next Table
End Sub
как то так наверное, не уверен насчет
Visual Basic
1
Tbl.cell(1, 1).EntireRow.Range.Font
, в ворде не работаю
0
-1 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 75
31.05.2011, 11:16  [ТС]
Нет не работает ... Все равно требует SELect
0
245 / 55 / 6
Регистрация: 05.08.2010
Сообщений: 222
31.05.2011, 15:32
Цитата Сообщение от Tinoo Посмотреть сообщение
Нет не работает ... Все равно требует SELect
тогда попробуй просто
Visual Basic
1
2
Application.ScreenUpdating = False
Application.ScreenUpdating = True
в начале и конце саба
должен быть прирост в производительности
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
01.06.2011, 17:50
Код:
Visual Basic
1
2
3
4
5
6
Public Sub Format_Tables()
Dim Таблица As Word.Table
For Each Таблица In ActiveDocument.Tables
    Call Change_Table_Formatting(Таблица)
Next Таблица
End Sub
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
Sub Change_Table_Formatting(Таблица As Word.Table)
'Добавить выравнивание по левому краю в сам стиль.
'Добавить "разрешить перенос строк на следующую страницу" в сам стиль.
With Таблица
    .Style = "Светлая заливка - Акцент 1"
End With
'Можете из нижеперечисленного тоже добавить в стиль (раз вы его используете).
With Таблица
    .Rows.WrapAroundText = False
    .AutoFitBehavior (wdAutoFitWindow)
    .Rows.HeightRule = wdRowHeightAuto
    With .Range.Font
        .Name = "Arial"
        .Size = 9
        .Color = wdColorAutomatic
    End With
End With
'Проверки, что ячейки объединены, нет
'(а в теме пишите про объединённые ячейки).
Таблица.Cell(1, 1).Select
Selection.SelectRow
With Selection.Range.Font
    .Color = wdColorWhite
    .Name = "Arial"
    .Bold = True
    .Size = 9
    .AllCaps = False
End With
With Options
    .DefaultBorderColor = wdColorAutomatic
End With
End Sub


Замечания по вашему коду:
  1. Нельзя назначать переменным имена объектов, которые есть в Word. В вашем случае нельзя использовать переменную Table, потому что есть такой объект Table. Это связано с тем, что VBA может воспринять переменную не как переменную, а как объект.
  2. Такого в вашем коде не было.
    В данный момент макрос перебирает каждую строку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2011, 17:50
Помогаю со студенческими работами здесь

Пакетное редактирование файлов Word
Всем привет. В сети нашел файл SrcAndRpl_Beta3.doc для пакетного найти/заменить. Работает прекрасно, но вот если объект в ворде...

Редактирование таблиц как в Word
Подскажите пожалуйста с помощью чего можно реализовать создание и редактирование таблиц в c# пользователем, те как в word: добавление...

Редактирование таблиц WORD через DELPHI
Ребзя, всем привет! Помогите, кто знает!Как сделать невидимыми границы ячеек которые я обвёл на рисунке?какое свойство за это отвечает? ...

Редактирование произвольной таблицы, если ряд полей таблиц содержит коды объектов из других таблиц
Уважаемые, Гуру! Хотелось бы построить редактор произвольной таблицы БД. Загрузка таблицы "select * from "+ имяТаблицы Если...

Редактирование таблиц
Здраствуйте, подскажите пожалуйсто, я создаю таблицу <table border="0" cellspacing="0" сellpadding="0"> <tr> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru