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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2013, 16:10   #31
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Ципихович Эндрю, таблица на 30 страниц, макрос обрабатывает около 5 минут.
Скрипт вне форума Ответить с цитированием
Старый 13.02.2013, 17:23   #32
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Чтобы воздействовать на HTML-код Word-документа, нужно:
  1. сохранить Word-документ как веб-страницу;
  2. открыть Word-документ в браузере;
  3. и уже через браузер внести изменения в HTML-код Word-документа;
  4. сохранить Word-документ;
  5. пересохранить Word-документ в обычный формат.
Такой алгоритм?
Скрипт вне форума Ответить с цитированием
Старый 13.02.2013, 17:51   #33
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

С таблицами скорости прибавляет цикл Do...Loop вместо For Each
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 13.02.2013, 17:53   #34
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

viter.alex, а как с помощью цикла Do ... Loop переходить по ячейкам?
Скрипт вне форума Ответить с цитированием
Старый 13.02.2013, 18:34   #35
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Код:
    Dim oCell As Cell
    Set oCell = ActiveDocument.Tables(1).Range.Cells(1)
    Do Until oCell Is Nothing
    'Делаешь что нужно
        Set oCell = oCell.Next
    Loop
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 15.02.2013, 02:47   #36
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Как ни странно, все дело тормозит таблица Чем она больше, тем медленнее. Ясто, что таблицу надо уменьшить. Идея такая: порезать ее ломтями, изменить, и склеить Набросал макрос. Тест показал на таблице 10x500 выигрыш в 3 раза. Чем больше, тем луше и лучше. Ниже, обычный вариант, убрав комментарии с циклов получим мой.
Код:
Public Sub Колбаса()

Dim D As Document
Dim T As Table, C As Cell
Dim i As Long
Dim TI!, W!

    Set D = ActiveDocument
    D.Range.Delete
    Set T = D.Tables.Add(Range:=D.Range, _
                         NumRows:=500, _
                         NumColumns:=10)
    T.Style = "Сетка таблицы"
    T.PreferredWidthType = wdPreferredWidthPoints
    T.PreferredWidth = CentimetersToPoints(20)
    W = CentimetersToPoints(0.5)
    DoEvents
    
    StatusBar = "Работаю..."
    TI = Timer
    ' начало кода
    
    'For i = T.Rows.Count To 2 Step -1
    '    T.Split BeforeRow:=i
    'Next

    For Each T In D.Tables
        For Each C In T.Range.Cells
            C.SetWidth W, wdAdjustNone
        Next
    Next
    
    'For i = D.Tables.Count - 1 To 1 Step -1
    '    D.Tables(i).Range.Next.Delete
    'Next i
    
    ' конец кода
    TI = Timer - TI
    MsgBox "Время: " & CStr(TI) & " сек."
    
' 10x100  3.3 /  1.5
' 10x300  25  /  7.5
' 10x500  66  /  18

End Sub
Это для таблиц без объединенных ячеек, иначе надо доработать макрос, чтобы не резал объединенные.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 15.02.2013, 07:20   #37
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Вождь, а как вам идея: работать с Word-документом, как с HTML-документом.

Word-документ состоит из двух частей:
  1. часть, которую мы видим на мониторе;
  2. часть, которую мы не видим на мониторе. Эта часть имеет HTML-структуру.
Я вот хочу попробовать вносить изменения в HTML-теги. В Word-документе есть HTML-теги, в которых указаны размеры таблицы и ячеек. HTML-структуру Word-документа можно представить как тип данных "String" и с помощью, например, библиотеки "Microsoft VBScript Regular Expressions" вносить изменения в HTML-структуру Word-документа.

Я пока думаю, что получить доступ к HTML-структуре Word-документа можно только через программу-браузер, например, Internet Explorer, и с использованием дополнительных библиотек, например "Microsoft HTML Object Library".
Скрипт вне форума Ответить с цитированием
Старый 15.02.2013, 08:17   #38
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от Скрипт Посмотреть сообщение
Вождь...как с HTML-документом...
Тогда, лучше осваивайте XML. docx это он и есть, doc легко преобразовать, в т.ч. средствами Word 2003. Никуда далеко ходить не надо, все в Word.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 15.02.2013, 08:20   #39
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Вождь, Word-документ с расширением "docx" имеет XML-структуру? И форматирование тоже делается с помощью XML-тегов?

Я думал, что XML-теги используются для извлечения данных, а не для форматирования.
Скрипт вне форума Ответить с цитированием
Старый 15.02.2013, 09:00   #40
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от Скрипт Посмотреть сообщение
...с расширением "docx" имеет XML-структуру...
Переименуйте "Файл.docx" в "Файл.docx.zip", распакуйте, и посмотрите. По знанию XML у меня твердая тройка, так что...
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение размера StringGrid'а iKarma Общие вопросы Delphi 2 04.12.2011 12:20
изменение размера формы maksim_serg Microsoft Office Excel 0 16.04.2010 04:22
Изменение размера файла в С++ Vladya Помощь студентам 0 08.12.2009 18:21
Изменение размера панели AbekIn3D Общие вопросы Delphi 3 05.11.2009 13:30
Изменение размера окна Anfall Общие вопросы Delphi 5 14.03.2009 10:06