Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Поля, таблицы Ворда / 5 сообщений из 5, страница 1 из 1
24.06.2012, 18:56
    #37852327
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поля, таблицы Ворда
здравствуйте, в Ворде например три таблицы, во второй таблице при проверке выделяю поле, есть строки

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 Dim SelectionFields1Index As Long
    SelectionFields1Index = Selection.Fields(1).Index
    
    Dim FieldsCursorRow As Long
    'номер строки в таблице, в документе, где расположено первое выделенное поле, даже если таблица имеет объединённые ячейки
    FieldsCursorRow = ActiveDocument.Fields(SelectionFields1Index).Code.Information(wdEndOfRangeRowNumber)

    Dim FieldsCursorCell As Long
    'номер столбца, то есть ячейки в строке таблицы, в документе где расположено первое выделенное поле, даже если таблица имеет объединённые ячейки
    FieldsCursorCell = ActiveDocument.Fields(SelectionFields1Index).Code.Information(wdEndOfRangeColumnNumber)



после прохождения строки FieldsCursorRow = ActiveDocument.Fields(SelectionFields1Index).Code.Information(wdEndOfRangeRowNumber)
почему-то третья таблица исчезает, ересью попахивает
2
как по аналогии высчитать
Код: vbnet
1.
2.
'номер таблицы в документе, где расположен курсор
    CursorTable = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count


номер таблицы в документе, где расположено первое выделенное поле
Спасибо
...
Рейтинг: 0 / 0
24.06.2012, 19:36
    #37852361
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поля, таблицы Ворда
сорри, второе должно быть так
2
как по аналогии высчитать
'номер таблицы в документе, где расположен курсор
CursorTable = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count

номер таблицы в документе, где расположено поле №...
Спасибо
...
Рейтинг: 0 / 0
24.06.2012, 19:46
    #37852370
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поля, таблицы Ворда
ну как бы второе смастерил
Код: vbnet
1.
2.
3.
 Dim SelectionFields1 As Long
    'номер таблицы в документе, где расположено поле ...
    SelectionFields1 = ActiveDocument.Range(0, Selection.Fields(1).Code.End).Tables.Count


а по первому не въехал почему исчезает, то исчезает, то нет, вот ересь.........
...
Рейтинг: 0 / 0
24.06.2012, 20:38
    #37852419
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поля, таблицы Ворда
странно код себя ведёт

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
  Dim SelectionFields1Index As Long
    'номер первого выделенного поля
    SelectionFields1Index = Selection.Fields(1).Index
       
    'оператор для отлова ошибок, указывает, что при возникновении ошибки нужно переходить к следующей строке кода
    'On Error Resume Next
     
    Dim SelectionFieldsTablesCount As Long
    'номер таблицы в документе, где расположено поле ...
    '5941 - Запрашиваемый номер семейства не существует
    SelectionFieldsTablesCount = ActiveDocument.Range(0, Selection.Fields(SelectionFields1Index).Code.End).Tables.Count

    Dim FieldsCursorRow As Long
    'номер строки в таблице, в документе, где расположено первое выделенное поле, даже если таблица имеет объединённые ячейки
    FieldsCursorRow = ActiveDocument.Fields(SelectionFields1Index).Code.Information(wdEndOfRangeRowNumber)

    Dim FieldsCursorCell As Long
    'номер столбца, то есть ячейки в строке таблицы, в документе где расположено первое выделенное поле, даже если таблица имеет объединённые ячейки
    FieldsCursorCell = ActiveDocument.Fields(SelectionFields1Index).Code.Information(wdEndOfRangeColumnNumber)
       
    'If Err.Number <> 5941 Then
    'Else
    'End If

    'требуется, чтобы в нужном месте отключить действие строки 1) On Error GoTo ... 2) либо действие строки On Error Resume Next
    On Error GoTo 0



выделяю одно поле не в таблице, его индекс 2 всё "гладко"
SelectionFieldsTablesCount = 1
FieldsCursorRow = -1
FieldsCursorCell = -1
если также выделяю несколько полей не в таблице, натыкаюсь на ошибку 5941
...
Рейтинг: 0 / 0
25.06.2012, 00:05
    #37852606
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поля, таблицы Ворда
разобрался
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 Dim SelectionFields1Index As Long
    'номер первого выделенного поля
    SelectionFields1Index = Selection.Fields(1).Index
         
    Dim SelectionFieldsTablesCount As Long
    'номер таблицы в документе, где расположено поле ...
    'если SelectionFieldsTablesCount = 0, тогда поле не в таблице
    SelectionFieldsTablesCount = ActiveDocument.Range(0, ActiveDocument.Fields(SelectionFields1Index).Code.End).Tables.Count
    
    Dim FieldsCursorRow As Long
    'номер строки в таблице, в документе, где расположено поле ..., даже если таблица имеет объединённые ячейки
    FieldsCursorRow = ActiveDocument.Fields(SelectionFields1Index).Code.Information(wdEndOfRangeRowNumber)
 
    Dim FieldsCursorCell As Long
    'номер столбца, то есть ячейки в строке таблицы, в документе где расположено поле ..., даже если таблица имеет объединённые ячейки
    FieldsCursorCell = ActiveDocument.Fields(SelectionFields1Index).Code.Information(wdEndOfRangeColumnNumber)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Поля, таблицы Ворда / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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