Заблокирован |
|
1 |
|
18.07.2009, 07:24. Показов 11715. Ответов 3
Добрый день! Ставлю курсор в таблицу и хочу узнать ее порядковый номер (ведь каждая таблица в документе имеет порядковый номер). Как это можно сделать? Т.е. ставлю курсор в таблицу, нажимаю кнопку макроса и появляется окно: Таблица № такой-то.
0 |
Toxa33rus 3895 / 898 / 122 Регистрация: 16.04.2009 Сообщений: 1,824 |
||||
18.07.2009, 22:45 |
2 |
|||
Попробуйте так:
Код глючный, но лучше ничего пока не могу предложить
0 |
Заблокирован |
||||
19.07.2009, 11:13 [ТС] |
3 |
|||
Я сегодня на форумах поскребал, но еще не разобрался, да и ошибки выдаются, как впрочем в вашем коде. Вот эти коды:
Добавлено через 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?
asked May 7, 2017 at 9:46
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
VariatusVariatus
14.3k2 gold badges14 silver badges30 bronze badges
1