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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2012, 23:27   #1
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию Таблицы из Word в HTML

Всем привет! )

Есть много файлов word, но для простоты изложения представим, что один. В этом файле имеется информация - текст + таблицы. Задача: сформировать html файл.
"Сохранить как HTML" вряд ли получиться. Макрос, который обрабатывает данный файл хватает инфу выборочно, плюс обрабатывает ее.
С текстом проблем нет. Засада с таблицами. Таблицы разные, в т.ч. с объединенными ячейками. Как быть?
Думаю, задачу можно свести к "как таблицу ворд преобразовать в html?"

Спасибо.
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 18.09.2012, 00:26   #2
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

чем вам не нравится
"Сохранить как HTML"
----
получите слоноподобного монстра---но результат получите
---
в ворде не только таблицы , но и
--рисунки 3-х видов(shapes/inlineshapes/frames)
--сноски
--формулы
--unicod -cимволы
................
и еще тьма объектов
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 18.09.2012, 16:35   #3
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

shanemac51, спасибо за ответ! Более внимательно рассмотрел предложенный вами вариант и пришел к выводу, что, в принципе, он довольно неплох. Благо, регулярными выражения пользоваться умею и достать из получившегося файла нужную мне информацию вполне возможно. Загвоздка в том, что уже есть написанный код на vba, который заточен на обработку этих файлов по определенному алгоритму, и, в целом, справляется с поставленной задачей. Есть код и для обработки таблиц (написанный мной). Но он работает по принципу "финт ушами" и делает это долго.

Переформулирую вопрос: как обойти таблицу word с объединенными ячейками и узнать области объединения?
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 18.09.2012, 18:59   #4
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

>узнать области объединения
вот глядя на таблицу Вы например видите эти объединения и как их назвать?
как в морском бое А1-А8? или как?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 18.09.2012, 23:16   #5
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию word

посмотрите статью
Вложения
Тип файла: zip Как сохранять таблицы Microsoft Office в формате HTML.zip (42.0 Кб, 29 просмотров)
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 19.09.2012, 01:26   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Саш, может, скопировать таблицу - вставить в Excel, а там ты как рыба в воде
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 19.09.2012, 12:05   #7
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Казанский, спасибо. Я сейчас как раз так и делаю (писал выше). Это медленно )

shanemac51, и Вам спасибо за статью. Начал читать, пока ничего нового : ) Дочитал. Все это мне уже известно. Кстати, некоторый код из статьи уже не работает ) Я почему-то думал, что есть способ проще.

Вместо этого (код из статьи)
Код:
intColMax = objTbl.Range.Information
intRowMax = objTbl.Range.Information
ReDim strTblArray(intRowMax, intColMax)
For intRow = 1 To intRowMax
    For intCol = 1 To intColMax
        strTblArray(intRow, intCol) = FILLER
    Next intCol
Next intRow

For intRow = 1 To intRowMax
    For intCol = 1 To intColMax
        On Error Resume Next
        Set objCell = objTbl.cell(intRow, intCol)
        If Err.Number = 0 Then
            objCell.Select
            strTmp = Selection.Range.Text
            strTblArray(objCell.RowIndex, objCell.ColumnIndex) = strTmp
        End If
        Err.Clear
    Next intCol
Next intRow
можно делать так
Код:
Sub io()
    Dim cell As cell
    Dim data() As Variant
    
    With Tables(1)
        ReDim data(1 To .Rows.Count, 1 To .Columns.Count)
        
        For Each cell In .Range.Cells
            data(cell.RowIndex, cell.ColumnIndex) = cell.Range.Text
        Next
    End With
End Sub
Вложения
Тип файла: zip Способ получения сведений.zip (19.2 Кб, 12 просмотров)
Тишина – самый громкий звук

Последний раз редактировалось nerv; 19.09.2012 в 12:36.
nerv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Word и PHP(html) -_ - Mr_ViK PHP 7 24.04.2012 10:17
html-верстка в word-е haldamir Microsoft Office Word 3 20.03.2012 02:40
Таблицы HTML MirtMacline HTML и CSS 1 20.02.2012 10:52
Таблицы html Syltan HTML и CSS 3 26.03.2010 13:37
Как вычислять значения вне таблицы WORD, с использованием данных из таблицы WORD prikolist Microsoft Office Word 6 21.11.2008 13:17