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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2009, 19:29   #21
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Как это никак? У меня работает, а у тебя — нет. Вот, пожалуйста.
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 15.04.2009 в 14:44.
viter.alex вне форума Ответить с цитированием
Старый 13.02.2009, 20:25   #22
shadowbeast
Пользователь
 
Регистрация: 11.02.2009
Сообщений: 29
По умолчанию

Виноват, безопасность на высоком уровне была.
Да, работает.) Спасибо огромное. А то подкинули таблицу листов на 100 для анализа. Нужно перегнать в дос-прогу. Я бы замаялся, вручную разбивать таблицу, даже с хоткеем)
Правда вот в столбцах ещё объединяются ячейки..
shadowbeast вне форума Ответить с цитированием
Старый 13.02.2009, 20:45   #23
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Ну вы, товарищ, даете! Надо на входе в эту ветку жирными буквами написать, чтобы включали макросы, если хотят чего-нибудь добиться.

По теме: Можно ведь и обратную операцию с этим файлом делать, но уже после обработки твоей суперпрогой.
Т.е. в начале разбитых строк ставить какой-нибудь символ типа &&&, а затем в уже в текстовом файле искать эту последовательность и удалять лишнее.
Если объяснишь, что нужно делать с ячейками, объединенными в столбцах, может и это решим.

На случай попадания таблиц с такими ячейками добавь On Error Resume Next в макрос после строки с именем процедуры.
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 13.02.2009 в 21:06.
viter.alex вне форума Ответить с цитированием
Старый 13.02.2009, 21:49   #24
shadowbeast
Пользователь
 
Регистрация: 11.02.2009
Сообщений: 29
По умолчанию

Ну глючная "суперпрога" не может обрабатывать таблицы в строках коих разное количество ячеек.
Есть таблицы когда объединены ячейки в строках, есть - когда в столбцах. Либо всё вместе.
Сейчас обработка ведётся вручную. Таблица-разбить таблицу. Но иногда пропускаются строки - сложно увидеть в 30 листах таблицы место где ячеек меньше.
Вот и возникла идея поручить это всё самому Ворду)

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

Тогда "суперпрога" нормально обработает табличные данные.
shadowbeast вне форума Ответить с цитированием
Старый 14.02.2009, 00:46   #25
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Зачем конвертер?..

Цитата:
Сообщение от shadowbeast Посмотреть сообщение
Вставил, всё равно никак)
Видимо ещё в дополнение к ссылкам придётся справку Винды по Бейсику почитать.
Либо найти таки конвертер из doc в ASCII )))
Alt, Ф (команда Файл в верхней панели) > Сохранить как... > Обычный текст (*.txt)

Как вы можете видеть, получаем нечто несусветное, зато txt!
Sasha_Smirnov вне форума Ответить с цитированием
Старый 14.02.2009, 09:43   #26
shadowbeast
Пользователь
 
Регистрация: 11.02.2009
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
Alt, Ф (команда Файл в верхней панели) > Сохранить как... > Обычный текст (*.txt)

Как вы можете видеть, получаем нечто несусветное, зато txt!
Ага..вот только таблицы все пропадают.
А нужна псевдографика.
shadowbeast вне форума Ответить с цитированием
Старый 14.02.2009, 10:20   #27
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Приложи текстовый файл, который получается сразу после преобразования. Может его можно автоматически подкорректировать?


Добавлено позже
Вот что удалось найти по этому вопросу:
Цитата:
Оказалось, что задача эта, действительно, по разным поводам уже рассматривалась, но решения найдено не было (в VBA нет способа выяснить, не является ли ячейка результатом слияния нескольких, по крайней мере — для ячеек, сливающихся по горизонтали).
Определить, что ячейка является результатом слияния по вертикали можно и можно разбить ее в исходное состояние. Нужен пример, чтобы я мог протестировать свой макрос.
Предлагаю такую последовательность действий:
  1. Перебираем все ячейки на предмет их слияния по вертикали;
  2. Разбиваем слитые по вертикали ячейки в их исходное состояние;
  3. Запускаем первый макрос и получаем таблицы с одинаковым количеством ячеек по строкам и столбцам;
  4. Конвертим все это добро «суперпрогой» (кстати, если она работает через командную строку, то прогу тоже можно запустить из макроса);
  5. Анализируем полученный результат и объединяем строки назад.
В результате человеческое вмешательство сведено к минимуму.
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 14.02.2009 в 10:51.
viter.alex вне форума Ответить с цитированием
Старый 14.02.2009, 11:00   #28
shadowbeast
Пользователь
 
Регистрация: 11.02.2009
Сообщений: 29
По умолчанию

Забъём на дос-режим. Как-нибудь это решат программисты. Или найдётся мифическая программа обработки док в тхт.
Главное разбивка таблиц непосредственно в Ворде.
То есть два макроса разбития:
1) объединённые ячейки в строках
2) объединённые ячейки в столбцах
shadowbeast вне форума Ответить с цитированием
Старый 14.02.2009, 11:49   #29
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Запусти сначала этот макрос, а потом тот, который разбивает таблицу.
Код:
Sub SplitMergedCells()
  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
End Sub
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 14.02.2009, 12:07   #30
shadowbeast
Пользователь
 
Регистрация: 11.02.2009
Сообщений: 29
По умолчанию

Получается можно не создавать единый макрос, а сделать два которые будут отлично работать)
Первый разбивает таблицу анализируя количество ячеек в строках, второй разбивает таблицу анализируя количество ячеек в столбцах.
shadowbeast вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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