powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как узнать абсолютный номер Words
4 сообщений из 4, страница 1 из 1
как узнать абсолютный номер Words
    #33263338
YaRust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я мало знаком с VBA. Пишу из под VFoxPro
Стоит задача разобрать документ Worda на следующие части:
1) таблицы
2) то что стоит между таблицами

Программа

Oword = CreateObject("Word.Application")
cFile ='H:\#\1.doc'
Oword.Documents.Open(cFile)

Данный документ можно разобрать по словам используя коллекцию слов
oword.Documents(1).Words(i).Text где i=1 до oword.Documents(1).Words.Count

определяю первое слово таблицы:
oword.Documents(1).Tables(1).Select
oword.Selection.Words.First - это как я понимаю и есть первое слово таблицы

Вопрос:
Как узнать номер этого слова в коллекции oword.Documents(1).Words
...
Рейтинг: 0 / 0
как узнать абсолютный номер Words
    #33266704
Как-то так, но коряво:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    Dim var As Variant
    Dim idx As Long
    Dim rng As Range
    Dim i As Long
    
    Set rng = Documents( 1 ).Tables( 1 ).Range.Words.First

    idx =  1 
    
    For Each var In Documents( 1 ).Words
        If var = rng.Text Then
            MsgBox idx
            Exit For
        End If
        idx = idx +  1 
    Next
...
Рейтинг: 0 / 0
как узнать абсолютный номер Words
    #33267756
YaRust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предложенный способ будет работать некорректно в следующих случаях:
1) Если есть две таблицы с одинаковым заголовком
2) Если есть слово в документе, совпадающее с первым словом заголовка таблицы

Я надеялся что можно как то пометить объект oword.Documents(1).Words(i)
Например если бы было свойство Comment, то:
oword.Documents(1).Words(i).Comment=str(i)
Подскажите есть ли подобное свойство? Нашел ID, но это похоже что то другое.
При присваивании не выдает ошибку, но свойство не меняется
...
Рейтинг: 0 / 0
как узнать абсолютный номер Words
    #33267771
YaRust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Единственный способ (правда очень корявый), который я вижу
1)Создать копию документа
2)В этой копии делаю следующие присваивания:
oword.Documents(2).Words(i).Text=str(i)
где i от 1 до oword.Documents(2).Words.Count

Тогда абсолютный номер Documents(1).Tables(1).Range.Words.First будет:
val(Documents(2).Tables(1).Range.Words.First.Text)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как узнать абсолютный номер Words
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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