Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить данные из таблицы в Word'е / 25 сообщений из 28, страница 1 из 2
12.05.2010, 12:48
    #36622936
Получить данные из таблицы в Word'е
Добрый день, уважаемые коллеги. Есть следующая задача :
В Word файле есть таблица, в которую извне заливается некая служебная информация. Нужно макросом пробежаться по этой табличке и, используя эту инфу сделать что-то другое (конкретно - переложить эту информацию в XML-файл).
После работы таблицу нужно скрыть, уничтожать нельзя.

Скрывать пока решил так : - Шрифт - скрытый
Если кто-нибудь может предложить более удобное решение - буду признателен. Основное требование - доступность данных из этой таблицы из макроса и её невидимость при редактировании файла пользователем и печати.

По части считывания информации ничего не ясно.
Знаю такой вариант :
Код: plaintext
Tables(номер).Cell(R,C).Range.Text
Но не понятно, как определить индекс таблицы.
Подскажите пожалуйста как из всех таблиц документа выбрать одну конкретную (получить её индекс). Править документ в части оформления и расположения этой конкретной таблицы можно практически как угодно.
...
Рейтинг: 0 / 0
12.05.2010, 12:55
    #36622972
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
Любитель Word'аПодскажите пожалуйста как из всех таблиц документа выбрать одну конкретную

Вы сами не чувствуете маразмнекоторую недосказанность в вашем вопросе

Сначала вы нам скажите, чем эта таблица отличается от других. Способов найти нужную таблицу много.
...
Рейтинг: 0 / 0
12.05.2010, 12:59
    #36622985
Получить данные из таблицы в Word'е
Shocker.Pro,

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

Лучше Вы скажите, как бы так выделить эту таблицу, чтобы однозначно её найти и какой способ поиска этой таблицы использовать.
Если ничего лучше, чем перебор всех таблиц документа с проверкой имени первого столбца нет, то тему можно закрывать, я так и сделаю. Но уж очень неохота применять такие решения.
...
Рейтинг: 0 / 0
12.05.2010, 13:03
    #36623003
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
word-файл - это не база данных, никаких специфичных идентификаторов объектов внутри документа для его текстовых таблиц не предусмотрено
...
Рейтинг: 0 / 0
12.05.2010, 13:04
    #36623006
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
Я же не знаю вашей квалификации. А так как вы не зарегистрированы, не могу посмотреть список ваших тем.

Любитель Word'аЛучше Вы скажите, как бы так выделить эту таблицу, чтобы однозначно её найти

Что значит "лучше выделить"? Это должен сделать пользователь? Или у вас некий код формирует это документ?


Любитель Word'аи какой способ поиска этой таблицы использовать.
Если ничего лучше, чем перебор всех таблиц документа с проверкой имени первого столбца нет

Зачем? Например есть поиск.
...
Рейтинг: 0 / 0
12.05.2010, 13:05
    #36623011
Получить данные из таблицы в Word'е
Konst_One,
Хорошо. А способ поиска таблицы, лучше чем тот, что я предложил тут есть?
...
Рейтинг: 0 / 0
12.05.2010, 13:06
    #36623018
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
Konst_Oneword-файл - это не база данных, никаких специфичных идентификаторов объектов внутри документа для его текстовых таблиц не предусмотрено

Предусмотрено свойство ID, туда можно вписать чё угодно.
...
Рейтинг: 0 / 0
12.05.2010, 13:07
    #36623019
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
Любитель Word'аKonst_One,
Хорошо. А способ поиска таблицы, лучше чем тот, что я предложил тут есть?

по известным вам заголовкам вполне нормально. есть ещё такое понятие как "слияние данных" в ворде. посмотрите в документации, может вам это подойдёт больше.
...
Рейтинг: 0 / 0
12.05.2010, 13:10
    #36623031
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
Shocker.ProЧто значит "лучше выделить"? Это должен сделать пользователь? Или у вас некий код формирует это документ?

Если таблицу можно курочить, как вы упоминали, достаточно вписать в любое ее место некий UID, а макрос найдет его методом .Find
...
Рейтинг: 0 / 0
12.05.2010, 13:16
    #36623063
Получить данные из таблицы в Word'е
Shocker.Pro,
В VBA моя квалификация между 1 и 2 по 5-ти балльной шкале :)
Не сталкивался с ним более-менее серьёзно :)
Как выделить.

Есть doc-файл (назовем его шаблон). Внешняя программа готовит отчет, после чего открывает этот шаблон и заполняет его данными.
Теперь, при формировании документа по шаблону мне нужно готовить xml, информация внутри которого должна браться из этого заполненного шаблона. При подготовке xml ничем, кроме данных из заполненного doc-файла пользоваться нельзя. Часть информации является служебной, читателям и распечатывателям этого word- документа она ни к чему, она нужна только в xml.

Эту информацию я хочу вынести в доп табличку, использовать её при формировании xml и скрыть. Как планирую скрывать описал в первом посте. Какую табличку создать мне все равно.
Табличку создам я, в файле-шаблоне. При этом я могу пометить её как захочу, лишь бы потом, в макросе, однозначно и быстро её (таблицу) найти. Информацию в эту табличку положит приложение.

Shocker.ProЗачем? Например есть поиск.
Если Вы про Find, то подскажите. что именно мне лучше искать? Если мне надо будет обращаться к ячейкам таблицы по
Код: plaintext
Tables(номер).Cell(R,C).Range.Text
, то как, сделав таблицу текущей, я могу узнать её [номер]
...
Рейтинг: 0 / 0
12.05.2010, 13:19
    #36623075
Получить данные из таблицы в Word'е
Shocker.ProЕсли таблицу можно курочить, как вы упоминали, достаточно вписать в любое ее место некий UID, а макрос найдет его методом .FindСпасибо. Тогда имя первого заголовка будет таким : 6B3340FE-1965-4A8F-9430-66AF91333F84

Я этот текст нашел. Но теперь мне надо обращаться к ячейкам таблицы, содержащеё найденный текст.
Как мне определить индекс текущей таблицы?
...
Рейтинг: 0 / 0
12.05.2010, 13:20
    #36623080
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
Любитель Word'аЕсли Вы про Find, то подскажите. что именно мне лучше искать? Если мне надо будет обращаться к ячейкам таблицы по
Код: plaintext
Tables(номер).Cell(R,C).Range.Text
, то как, сделав таблицу текущей, я могу узнать её [номер]

Не нужен вам ее номер.
Код: plaintext
.Find(....).Tables( 1 )
это ссылка на нужную вам таблицу.
Можете присвоить ее переменной и перебирать потом в ней ячейки (строки, столбцы) с помощью For... Each
...
Рейтинг: 0 / 0
12.05.2010, 13:25
    #36623093
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
http://www.vbforums.com/archive/index.php/t-402098.html
...
Рейтинг: 0 / 0
12.05.2010, 13:28
    #36623105
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
а вообще вот тут полное собрание сочинений на тему программирования в ворде для таблиц
...
Рейтинг: 0 / 0
12.05.2010, 13:55
    #36623160
Получить данные из таблицы в Word'е
Shocker.Pro
Не нужен вам ее номер.
Код: plaintext
.Find(....).Tables( 1 )
это ссылка на нужную вам таблицу.
Можете присвоить ее переменной и перебирать потом в ней ячейки (строки, столбцы) с помощью For... Each
Shocker.Pro,
будьте добры, раскройте пример пожалуйста. Не пойму куда .Tables(1) добавлять.
Код: plaintext
1.
2.
3.
    Set WdRange = ActiveDocument.Content
    Set WdTable = WdRange.Find(.Text = "6B3340FE-1965-4A8F-9430-66AF91333F84").Tables( 1 )
    
    MsgBox (WdTable.Cell( 1 ,  1 ).Range.Text)
Это я правильно сделал? Получаю Invalid or unqualified reference.
...
Рейтинг: 0 / 0
12.05.2010, 13:55
    #36623163
Получить данные из таблицы в Word'е
Konst_Oneа вообще вот тут полное собрание сочинений на тему программирования в ворде для таблицKonst_One,
Спасибо!
...
Рейтинг: 0 / 0
12.05.2010, 13:57
    #36623169
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
Любитель Word'аЭто я правильно сделал? Получаю Invalid or unqualified reference.

Код: plaintext
MsgBox (WdTable.Cells( 1 ).Range.Text)
...
Рейтинг: 0 / 0
12.05.2010, 14:02
    #36623178
Получить данные из таблицы в Word'е
Shocker.ProЛюбитель Word'аЭто я правильно сделал? Получаю Invalid or unqualified reference.

Код: plaintext
MsgBox (WdTable.Cells( 1 ).Range.Text)

Слетает на этой строке
Код: plaintext
1.
    Set WdTable = WdRange.Find(.Text = "6B3340FE-1965-4A8F-9430-66AF91333F84").Tables( 1 )
В чем я тут ошибся?
...
Рейтинг: 0 / 0
12.05.2010, 14:03
    #36623179
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
Любитель Word'аВ чем я тут ошибся?

А где вы взяли такой синтаксис поиска?
...
Рейтинг: 0 / 0
12.05.2010, 14:05
    #36623189
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
Я, наверное, вас сам немножко спутал

Код: plaintext
.Find.Execute.Tables( 1 )
...
Рейтинг: 0 / 0
12.05.2010, 14:06
    #36623191
Получить данные из таблицы в Word'е
Shocker.ProА где вы взяли такой синтаксис поиска?
Ой, лучше не спрашивайте!

А какой должен быть синтаксис, чтобы в конце дописать .Tables(1) и получить ссылку на нужную таблицу?
...
Рейтинг: 0 / 0
12.05.2010, 14:09
    #36623205
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
Я сам немножно спутал с экселем

Код: plaintext
1.
2.
Set WdRange = ActiveDocument.Content
WdRange.Find.Text = "6B3340FE-1965-4A8F-9430-66AF91333F84"
Set WdTable = WdRange.Find.Execute.Tables( 1 )

но ща сам еще проверю... засомневался
...
Рейтинг: 0 / 0
12.05.2010, 14:14
    #36623218
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
...
Рейтинг: 0 / 0
12.05.2010, 14:15
    #36623222
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить данные из таблицы в Word'е
вот так
проверил

Sub Макрос1()

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim wdTable As Table, WdRange As Range
Set WdRange = ActiveDocument.Content
WdRange.Find.ClearFormatting
WdRange.Find.Text = "456456"
WdRange.Find.Execute
Set wdTable = WdRange.Tables( 1 )
MsgBox wdTable.Cell( 1 ,  1 )

End Sub
...
Рейтинг: 0 / 0
12.05.2010, 14:18
    #36623235
Получить данные из таблицы в Word'е
Konst_One и, особенно, Shocker.Pro!

Большое Вам спасибо!
Что мне было надо, то получилось!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить данные из таблицы в Word'е / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]