Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 14.02.2009, 13:18   #31
viter.alex
Балуюсь кодами
Профессионал
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Адрес: Харків, Україна
Сообщений: 1,803
Репутация: 716

icq: 194381182
skype: viter.alex
По умолчанию

Цитата:
Сообщение от shadowbeast Посмотреть сообщение
Получается можно не создавать единый макрос, а сделать два которые будут отлично работать)
Первый разбивает таблицу анализируя количество ячеек в строках, второй разбивает таблицу анализируя количество ячеек в столбцах.
Нет, не так.
Макрос в этом посте анализирует каждую ячейку на предмет ее слияния по строкам. Если она слита, то ячейка разбивается на то количество строк, которое в ней объединено.
После работы этого макроса нужно запустить разбивку таблиц. Не наоборот. Потому что будет ошибка из-за того, что невозможно обратиться к отдельной строке в таблице, если есть ячейки слитые по строкам. К сожалению, как я уже писал, определить слияние по столбцам невозможно
__________________
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума   Ответить с цитированием
Старый 14.02.2009, 13:34   #32
shadowbeast
Пользователь
 
Регистрация: 11.02.2009
Сообщений: 29
Репутация: 15
По умолчанию

Ну всё равно получается так, что два макроса делают работу, которую не может сделать единый макрос.
Сначала работа по ячейкам объединённым по строкам, потом находим строки в которых разное количество ячеек и разделяем их. Так?
shadowbeast вне форума   Ответить с цитированием
Старый 14.02.2009, 13:42   #33
viter.alex
Балуюсь кодами
Профессионал
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Адрес: Харків, Україна
Сообщений: 1,803
Репутация: 716

icq: 194381182
skype: viter.alex
По умолчанию

Цитата:
Сообщение от shadowbeast Посмотреть сообщение
Ну всё равно получается так, что два макроса делают работу, которую не может сделать единый макрос.
Сначала работа по ячейкам объединённым по строкам, потом находим строки в которых разное количество ячеек и разделяем их. Так?
Так, только их можно объединить в один, просто поставив друг за другом. Приблизительно так. Только я представляю, сколько времени это займет.
Код:
Sub MacroSummary()
  On Error Resume Next
  Dim oTbl As Table, oCell As Cell
  Dim i As Integer, j As Integer, iRSpan As Integer, iColSpan As Integer
  For Each oTbl In ActiveDocument.Tables
    For i = 1 To oTbl.Rows.Count
      For j = 1 To oTbl.Columns.Count
        oTbl.Cell(i, j).Select
        'Сколько строк объединено в этой ячейке
        iRSpan = Selection.Information(wdEndOfRangeRowNumber) - _
                  Selection.Information(wdStartOfRangeRowNumber) + 1
        If iRSpan > 1 Then Selection.Cells.Split iRSpan, 1, True
      Next j
    Next i
  Next oTbl
'Закончили с объединенными ячейками, переходим к разбиению таблиц
  Dim oRow As Row, _
      iTblCountBefore As Integer, _
      iTblCountAfter As Integer, _
      j As Integer
  Do
   iTblCountBefore = ThisDocument.Tables.Count 'Количество таблиц до разбиения
   For Each oTbl In ThisDocument.Tables
      For j = 2 To oTbl.Rows.Count
        Set oRow = oTbl.Rows(j)
        'если количество ячеек в текущей строке не равно количеству ячеек в предыдущей, то
        'таблицу разбиваем'
        If oRow.Cells.Count <> oRow.Previous.Cells.Count _
          Or oRow.Cells.Count <> oTbl.Columns.Count _
          Then oTbl.Split oRow
        Exit For
      Next
    Next oTbl
    iTblCountAfter = ThisDocument.Tables.Count 'количество таблиц после
  Loop Until iTblCountAfter = iTblCountBefore
End Sub
__________________
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума   Ответить с цитированием
Старый 13.07.2015, 01:26   #34
Sasha_Smirnov
Особый статус
Профессионал
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Адрес: Петербург
Сообщений: 1,533
Репутация: 691
По умолчанию До и после

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Эту тему я поднимал, но, думаю, что до введения нового движка на форуме ничего не изменится
И после тоже: VB тут не в чести!
Sasha_Smirnov вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вычислять значения вне таблицы WORD, с использованием данных из таблицы WORD prikolist Microsoft Office Word 6 21.11.2008 14:17
преобразовать doc в txt не через OLE furstenberg Компоненты Delphi 0 12.11.2008 15:44
Открытие .doc или .docx в MS Word MADDAN Microsoft Office Word 4 16.09.2008 21:55
Открыть файл *.doc без установленого Word Pashekka Софт 6 15.09.2007 08:25


06:24.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.