powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Поля, таблицы Ворда
5 сообщений из 5, страница 1 из 1
Поля, таблицы Ворда
    #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
Поля, таблицы Ворда
    #37852361
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, второе должно быть так
2
как по аналогии высчитать
'номер таблицы в документе, где расположен курсор
CursorTable = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count

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


а по первому не въехал почему исчезает, то исчезает, то нет, вот ересь.........
...
Рейтинг: 0 / 0
Поля, таблицы Ворда
    #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
Поля, таблицы Ворда
    #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
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Поля, таблицы Ворда
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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