Как узнать номер таблиц word

Busine2009

Заблокирован

1

18.07.2009, 07:24. Показов 11715. Ответов 3


Студворк — интернет-сервис помощи студентам

Добрый день!

Ставлю курсор в таблицу и хочу узнать ее порядковый номер (ведь каждая таблица в документе имеет порядковый номер).

Как это можно сделать? Т.е. ставлю курсор в таблицу, нажимаю кнопку макроса и появляется окно: Таблица № такой-то.



0



Toxa33rus

3895 / 898 / 122

Регистрация: 16.04.2009

Сообщений: 1,824

18.07.2009, 22:45

2

Попробуйте так:

Visual Basic
1
currentTable = ActiveDocument.Range(1, Selection.Start).Tables.Count

Код глючный, но лучше ничего пока не могу предложить



0



Busine2009

Заблокирован

19.07.2009, 11:13

 [ТС]

3

Я сегодня на форумах поскребал, но еще не разобрался, да и ошибки выдаются, как впрочем в вашем коде. Вот эти коды:

Visual Basic
1
2
3
4
5
6
7
8
ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count
 
ActiveDocument.Tables(ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count).ID
 
ActiveDocument.Range(ActiveDocument.Content.Start, Selection.Range.End + 1).Tables.Count
 
Dim MyTabl as Word.Table
set MyTabl = ActiveDocument.Tables(ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count)

Добавлено через 12 часов 4 минуты 30 секунд
Хотя я ошибся, ваш код работает. Только почему-то вчера не сработал, наверное, что-то перепутал. Спасибо.



0



3895 / 898 / 122

Регистрация: 16.04.2009

Сообщений: 1,824

21.07.2009, 10:13

4

Помоему это все одно и то же



0



GDK
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 23.10.2008 (Чт) 16:15

Word и номер таблицы.

Интересно кто как решает такую вещь: Определить номер таблицы, в которой находится курсор или что-нибудь выделено.
Я делаю это так: Определяю переменную-диапазон TmpRng as Word.Range. Присваиваю ему диапазон выделения. Проверяю номер стартовой или конечной ячейки в этом диапазоне — если ноль, то выход. Если нет, то расширяю диапазон до wdTable. Теперь TmpRng.Tables(1).ID — номер нужной таблицы. Может есть способ проще?


viter.alex
Бывалый
Бывалый
Аватара пользователя

 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal
  • Сайт
  • ICQ

Re: Word и номер таблицы.

Сообщение viter.alex » 25.06.2009 (Чт) 15:28

Что имеется ввиду под номером таблицы? Порядковый или ID?
Если порядковый, тогда одной строкой:

Код: Выделить всё
ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count

Если ID, то тоже одной строкой, но чуть сложнее:

Код: Выделить всё
ActiveDocument.Tables(ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count).ID

Лучше день потерять — потом за пять минут долететь!


dormouse
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя

 
Сообщения: 140
Зарегистрирован: 10.01.2007 (Ср) 21:58
Откуда: Волжский
  • ICQ

Re: Word и номер таблицы.

Сообщение dormouse » 25.06.2009 (Чт) 15:46

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

Код: Выделить всё
If Selection.Information(wdWithInTable) = True Then
...

VBA, MSA97


GDK
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 23.10.2008 (Чт) 16:15

Re: Word и номер таблицы.

Сообщение GDK » 25.06.2009 (Чт) 18:08

Во как!
Значит ссылка на таблицу, будет выглядеть так:

Код: Выделить всё
Dim MyTabl as Word.Table
set MyTabl = ActiveDocument.Tables(ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count)

Здорово одной строчкой. А я так не догодался. Теперь буду так делать.

А как делать проверку что курсор в таблице — это я знаю. Но всё равно спасибо за ответ.


Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Re: Word и номер таблицы.

Сообщение Ципихович Эндрю » 07.04.2010 (Ср) 19:39

Скажите кто знает эти решения оба верны?
Какакя между ими разница?
Номер_текущей_таблицы_где_находится_курсор = ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count
Номер_текущей_таблицы_где_находится_курсор = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count


Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Re: Word и номер таблицы.

Сообщение Ципихович Эндрю » 07.04.2010 (Ср) 20:15

Посмотрел так получается это утверждение: Номер_таблицы_где_расположен_курсор = ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count не верно всегда равно 0??


GDK
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 23.10.2008 (Чт) 16:15

Re: Word и номер таблицы.

Сообщение GDK » 08.04.2010 (Чт) 12:59

ActiveDocument.Range.Start — это начало документа, т.е. 0
Selection.Start — это начальная позиция в выделении.

Посмотрел так получается это утверждение: Номер_таблицы_где_расположен_курсор = ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count не верно всегда равно 0??

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


Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Re: Word и номер таблицы.

Сообщение Ципихович Эндрю » 08.04.2010 (Чт) 17:54

Утверждение не верно и более добавить нечего
Номер_таблицы_где_расположен_курсор = ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Start).Tables.Count
не может быть знак равенства в твете от 25.06.2009 (Чт) 18:28



Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: PetalBot и гости: 2

Всем привет!
Подскажите, как можно решить такую задачу:
В Word в фоновом(!) режиме из Excel вставляю таблицу таким кодом:

Код
WD.Bookmarks("Таблица_1").Range.PasteExcelTable _
        LinkedToExcel:=False, _
        WordFormatting:=True, _
        RTF:=False


Далее, обращаюсь в цикле к каждой ячейке таблицы и выравниваю текст по центру и по вертикале вот таким кодом:

Код
WD.Tables(1).cell(i, j).Range.ParagraphFormat.Alignment = 1
WD.Tables(1).cell(i, j).Range.Cells.VerticalAlignment = 1

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

Как можно узнать номер таблицы, которую вставляю через PasteExcelTable или же, как сразу центрировать данные (и по вертикали и по горизонтали) во вставляемой таблице?

Метод Selection, применяемый к ActiveDocument не подходит, т.к. необходимо, чтобы Word был в фоновом режиме. Да и даже не в фоновом, что-то не особо получается…

Может быть как-то в объектную переменную эту создаваемую таблицу записывать и далее уже к объекту таблицы обращаться, но как это сделать не знаю!?

Модератор:Naeel Maqsudov

Slavik_TZ

Сообщения:7
Зарегистрирован:21 авг 2007, 12:58

Помогите. может кто-то сталкивался…
Как определить номер таблицы в документе Word, если известно что в ней находится определенное слово, символ…
Selection.Execute FindText:=»определенное слово»… а дальше
Selection.Information смотрел не подходит
Зарание благодарен !!!

Vikar

Сообщения:51
Зарегистрирован:24 апр 2007, 14:21

21 авг 2007, 14:41

Может просмотреть в цикле (for each …)все таблицы документа и если в ней есть искомое значение, то выбрать номер этой таблицы. Например:

Код: Выделить всё

Public Sub SerchTable()
Dim tb As Table
    i = 0
    For Each tb In Tables
        tb.Select
        If Selection.Find.Execute(findtext:="определенное слово...") Then
                        MsgBox "Таблица номер " + CStr(i)
        End If
        i = i + 1
    Next
End Sub

Может быть можно и оптимальней сделать, но не нашел свойство «номер таблицы». Пришлось вводить свой счетчик.

Slavik_TZ

Сообщения:7
Зарегистрирован:21 авг 2007, 12:58

21 авг 2007, 14:51

Я нашел решение если использовать свойство Table ID
For I=1 To ActiveDocument.Tables.Count Step 1
Tables(I).ID=Str(I)
Next I
….
X=Int(Selection.Tables(1).ID)
Ваш тоже хорош, но а если слово не в таблице, и зарание извесно что следующая строка точно в таблице
Определенное слово
——————————
таблица
——————————

I have this large Word doc with 100 tables. However, I only need to use 3 tables for a VB script, example:

Set tbl = wdDoc.Tables(1) 

Where this refers to the first table in the Word doc. However, the 3 tables are in the middle of the document. How may I know their «index number» instead of manually checking if they are the nth table in the document?

Martijn Pieters's user avatar

asked May 7, 2017 at 9:46

Angelique Castaneda's user avatar

2

I assign names to the Title property of tables I need to identify. Then I loop through all the tables in the document and pick out the one with the Title I want.

answered May 8, 2017 at 11:09

Variatus's user avatar

VariatusVariatus

14.3k2 gold badges14 silver badges30 bronze badges

1

Понравилась статья? Поделить с друзьями:
  • Как узнать номер строки по значению в excel
  • Как узнать процентное соотношение между двумя числами в excel
  • Как узнать номер строки в excel формула
  • Как узнать процент числа от числа формула excel
  • Как узнать номер строки vba excel