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

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

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

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

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

Цитата:
Сообщение от 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
По умолчанию До и после

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вычислять значения вне таблицы 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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS