Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Word / 7 сообщений из 7, страница 1 из 1
23.06.2004, 14:16
    #32573835
Местный писатель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Word
К сожалению я VBA не знаю и код представленный ниже написан на VС++,
но сложившееся проблема будет ближе именно к VBA программерам

Есть шаблонный документ , который подгружается в программе .
В этом шаблоне куча всяких обьетов , в частности таблицы и примечания.

Задача очень проста по формулировке , но возможна сложна по исполнению:
Надо определить индекс таблицы в которой стоит примечание

Цикл по проходу по примечаниям :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
void __fastcall TWordHandler::FillParam(AnsiString Name// Имя примечания)
{
 RangePtr Range=WordDocument->Range(TNoParam(),TNoParam());
 for(int i= 1 ;i<=Range->Comments->Count;i++)
   {
     AnsiString St = Range->Comments->Item(i)->Range->Text;
     if (St == Name)
     {
      //Code
     }
   }
}


Вместо "//Code" надо вставить код (можно на VBA и возможно это будет цикл) , где будет вычислен индекс таблицы к которой принадлежит примечание с именем Name...
...
Рейтинг: 0 / 0
23.06.2004, 14:37
    #32573893
tpg
tpg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Word
Надо в коллекции объектов Tables перебрать все объекты Table. Только с Count там что то не так - надо мануал смотреть или в VBA есть цикл конструкции For Each MyObject In MyCollection...
...
Рейтинг: 0 / 0
23.06.2004, 14:43
    #32573910
Местный писатель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Word
tpgНадо в коллекции объектов Tables перебрать все объекты Table. Только с Count там что то не так - надо мануал смотреть или в VBA есть цикл конструкции For Each MyObject In MyCollection...


Перебрать то я переберу , но вот что дальше ?
Как проверить принадлежность примечания к текущей ,во время перебора, таблице ???
...
Рейтинг: 0 / 0
23.06.2004, 15:14
    #32574012
Местный писатель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Word
Может через Comment.Parent пробовать ?
...
Рейтинг: 0 / 0
23.06.2004, 16:51
    #32574316
Word
Народ , я вас поздравляю ! Оказывается таблицу по примечанию найти нельзя ......................................................
...
Рейтинг: 0 / 0
23.06.2004, 17:09
    #32574355
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Word
эх, вот писатели пошли - все им нИЗЗЯ,

1) F1- Range


Вот, возможно, НЕ САМЫЙ ОПТИМАЛЬНЫЙ, уверен, что не единственный, на пальцах в 15 сек. созданный тест, ПРИГОДНЫЙ для проверки, принадлежит ли коммент табле.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub TestComment()
  Dim tDoc As Word.Document
  Dim colComments As Word.Comments
  Dim colTables As Word.Tables
  Dim tComment As Word.Comment
  Dim tTable As Word.Table
  
  Set tDoc = Application.ActiveDocument
  
  Set colComments = tDoc.Comments
  
  Set colTables = tDoc.Tables
  
  For Each tComment In colComments
    For Each tTable In colTables
     Debug.Print tComment.Reference.InRange(tTable.Range)
    Next
  Next
  
End Sub
...
Рейтинг: 0 / 0
23.06.2004, 17:31
    #32574394
Местный писатель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Word
Код: plaintext
Debug.Print tComment.Reference.InRange(tTable.Range)

Ключевой скрипт дня !
Thanks Victosha !
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Word / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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