Sub Поиск_и_вставка()
Dim tbl As Table
‘1. Цикл по всем таблицам в файле в поисках нужной таблицы.
For Each tbl In ActiveDocument.Tables
‘ Если начало таблицы находится на странице 3, то выход из цикла, при этом таблице,
‘ которая находится на странице 3, будет присвоено vba-имя «tbl».
If ActiveDocument.Range(Start:=tbl.Range.Start, End:=tbl.Range.Start). _
Information(wdActiveEndPageNumber) = 3 Then
Exit For
End If
Next tbl
‘2. Проверка, была ли найдена нужная таблица.
If tbl Is Nothing Then
MsgBox «На странице 3 нет таблицы.», vbExclamation
Exit Sub
End If
‘3. Вставка в конец таблицы строки.
tbl.Rows.Add
End Sub
SkyFlyStaR 1 / 1 / 0 Регистрация: 16.10.2011 Сообщений: 69 |
||||
1 |
||||
18.04.2014, 15:50. Показов 5605. Ответов 2 Метки нет (Все метки)
Есть документ, содержащий 2 заполненные таблицы
Если параметр в Tables равен 1, то таблица находится и обрабатывается без проблем, иначе появляется ошибка 5941 «Запрашиваемый номер семейства не существует», не понимаю в чем проблема
0 |
shanemac51 Модератор 11341 / 4660 / 748 Регистрация: 07.08.2010 Сообщений: 13,497 Записей в блоге: 4 |
||||
18.04.2014, 16:02 |
2 |
|||
1 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||||||||||
18.04.2014, 16:22 |
3 |
|||||||||||
Сообщение было отмечено SkyFlyStaR как решение РешениеКоллеги,
это то же самое, что
Добавлено через 4 минуты
1 |
I am looking for a way (or decent introduction) into how to select every table in a Microsoft Word 2013 Document and autofit the contents. Each table is independent of one another and separated by text.
I have established the following code so far:
Sub autofit()
Selection.Tables(1).AutoFitBehavior (wdAutoFitContent)
End Sub
Which works for individual tables and every column in said table, I understand the format of the «for loop», but would like a nudge to how to transform my individual selection to the entire document.
This is my first post so apologies for any conventions I have missed.
cheezsteak
2,6924 gold badges22 silver badges38 bronze badges
asked Dec 18, 2014 at 17:18
Its pretty trivial to loop them all;
Dim t As Table
For Each t In ActiveDocument.Tables
t.AutoFitBehavior wdAutoFitContent
Next
answered Dec 18, 2014 at 17:22
Alex K.Alex K.
170k30 gold badges263 silver badges286 bronze badges
1
- Remove From My Forums
-
Question
-
Is there any way to «Name» a table in a Word Document, so that it can easily be referred to later, either directly or by searching?
I see that the ID property can be set (i.e. Tables(1).ID = «Table1»), but after doing so, can the table be searched for, or do I have to iterate through each table in the document to try to find the table with ID = «Table1»?
Is there no way to refer to a Table through a name [i.e. Tables(«Table1»)], just as one would reference a worksheet in an Excel workbook? [i.e. Sheets(«Sheet1»)] Or is there some other way to name/locate a particular table besides using «brute force»?
Many thanks!
DragonForest
Answers
-
To expand on the bookmark route, and it is what I use.
If you bookmark ANY table, you can then use it as a name. The advantage is that you can move the table anywhere you like, change the rows…whatever, and it does not affect the ability to use a name. Normally if you move a table (or add another
table before it), the index number changes. this makes using an index number veryb unreliable.So. You bookmark a table with the name «ClientData». Now you can use a Table object and set it to THAT table, no matter where it is in the document.
Sub GetClientData()
Dim file
Dim path As String
Dim oTable As Table
Dim WriteToDoc As Document
Dim SourceDoc As Document
path = «X:YaddaBlah»
Set WriteToDoc = ActiveDocumentfile = Dir(path & «*.doc»)
Do While file <> «»
Set SourceDoc = Documents.Open(FileName:=path & file)
Set oTable = SourceDoc.Bookmarks(«ClientData»).Range.Tables(1)
WriteToDoc.Range.InsertAfter oTable.Cell(3, 1).Range.Text & vbCrLf
SourceDoc.Close
Set oTable = Nothing
Set SourceDoc = Nothing
file = Dir()
Loop
End SubThis code runs through all .doc files in a folder, opening each, setting a table object for a bookmarked table named ClientData, getting the text from cell row3,column1, and putting that text into a document.
Bookmarking tables allows use of names for that table. It is a very powerful tool. I name all my tables.
-
Edited by
Sunday, April 22, 2012 1:23 AM
-
Marked as answer by
DragonForest
Sunday, April 22, 2012 7:55 AM
-
Edited by
-
«Brute force» seems to be the way to go:
Sub FindTable() Dim tbl As Table For Each tbl In ActiveDocument.Tables If tbl.ID = "MyID" Then Exit For End If Next tbl If Not tbl Is Nothing Then ' ... End If End Sub
Regards, Hans Vogelaar
-
Marked as answer by
DragonForest
Friday, April 20, 2012 4:48 PM
-
Marked as answer by
-
The Tables(index).ID property is designed for Internet/HTML/XML purposes.
If you want to use it in Word, you have to use something like this:
——
Selection.Tables(1).ID = «My Crazy Table»
——
and then:
——
Dim tbl As Table
For Each tbl In ActiveDocument.Range.Tables
If tbl.ID = «My Crazy Table» Then
tbl.Select
Exit For
End If
Next——
Or else, use bookmarks:
——
Selection.Tables(1).Range.Bookmarks.Add «Crazy_Table»
——and then:
——
ActiveDocument.Bookmarks(«Crazy_Table»).Range.Select
——
-
Marked as answer by
DragonForest
Friday, April 20, 2012 4:47 PM
-
Marked as answer by
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Как найти следующую таблицу?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 7 ]
1 11.05.2012 08:18:56
- Alex_Gur
- Модератор
- Неактивен
- Откуда: Москва
- Зарегистрирован: 28.07.2011
- Сообщений: 2,758
- Поблагодарили: 492
Тема: Как найти следующую таблицу?
В файле Word много таблиц. Подскажите, пожалуйста, как можно осуществить поиск следующей таблицы в файле?
Пишут, что для этого можно использовать метод StartOf().
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.
2 Ответ от Alex_Gur 11.05.2012 10:51:33
- Alex_Gur
- Модератор
- Неактивен
- Откуда: Москва
- Зарегистрирован: 28.07.2011
- Сообщений: 2,758
- Поблагодарили: 492
Re: Как найти следующую таблицу?
Нашел следующее приемлемое решение:
Sub GoToNextTable01()
Set myRange = ActiveDocument.Words(1).GoToNext(What:=wdGoToPage)
With Selection
Set myRange = .GoToNext(What:=wdGoToTable)
.MoveRight Unit:=wdWord, Extend:=wdExtend
End With
End Sub
А как все же найти следующую таблицу с использованием метода StartOf()?
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.
3 Ответ от Ципихович Эндрю 11.05.2012 17:14:04
- Ципихович Эндрю
- генерал-полковник
- Неактивен
- Зарегистрирован: 04.02.2010
- Сообщений: 506
- Поблагодарили: 23
Re: Как найти следующую таблицу?
типа того
а = ActiveDocument.Tables(1).Start
потом перейти к а
4 Ответ от Alex_Gur 11.05.2012 19:10:10
- Alex_Gur
- Модератор
- Неактивен
- Откуда: Москва
- Зарегистрирован: 28.07.2011
- Сообщений: 2,758
- Поблагодарили: 492
Re: Как найти следующую таблицу?
Ципихович Эндрю пишет:
типа того
а = ActiveDocument.Tables(1).Start
потом перейти к а
Эндрю, а можно поподробней?
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.
5 Ответ от Ципихович Эндрю 11.05.2012 19:54:49
- Ципихович Эндрю
- генерал-полковник
- Неактивен
- Зарегистрирован: 04.02.2010
- Сообщений: 506
- Поблагодарили: 23
Re: Как найти следующую таблицу?
А = ActiveDocument.Tables(2).Range.Start
‘выделить промежуток … Start … End …
ActiveDocument.Range(Start:=А, End:=А).Select
6 Ответ от Alex_Gur 11.05.2012 20:08:23
- Alex_Gur
- Модератор
- Неактивен
- Откуда: Москва
- Зарегистрирован: 28.07.2011
- Сообщений: 2,758
- Поблагодарили: 492
Re: Как найти следующую таблицу?
Ципихович Эндрю пишет:
А = ActiveDocument.Tables(2).Range.Start
‘выделить промежуток … Start … End …
ActiveDocument.Range(Start:=А, End:=А).Select
Стоит задача не выделить таблицу, а перейти к началу таблицы.
И еще — вы имеете в виду StartOf()? Нужно ли что-то записывать в скобках?
Еще один вопрос мне непонятен: почему в последнем посте вы написали Tables(2), а перед этим — Tables(1)?
Нужно перейти сначала к таблице 1, затем к таблице 2, 3 и т.д.
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.
7 Ответ от Ципихович Эндрю 11.05.2012 20:13:13
- Ципихович Эндрю
- генерал-полковник
- Неактивен
- Зарегистрирован: 04.02.2010
- Сообщений: 506
- Поблагодарили: 23
Re: Как найти следующую таблицу?
Стоит задача не выделить таблицу, а перейти к началу таблицы.
если выделить — ActiveDocument.Tables(2).Range.Select — пишу по памяти
а так так я написал нужное Вам
И еще — вы имеете в виду StartOf()? Нужно ли что-то записывать в скобках? — с этим не работал
Еще один вопрос мне непонятен: почему в последнем посте вы написали Tables(2), а перед этим — Tables(1) — а что Вы не спрашиваете первый раз я писал .Start а второй .Range.Start — это более точно, первый раз писал по памяти:)
по поводу 1 или 2 — пишите ту которая нужна
Сообщений [ 7 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Похожие темы
- Просмотр переходов на следующую страницу
- Переход на следующую страницу — как событие
- перенос таблицы на следующую страницу
- Сочетание клавиш: переход на следующую страницу
- Прошу помощи: автоперенос текста в следующую ячейку таблицы
- Помогите сделать переход на следующую строчку в таблице автоматически
- Автоматический перенос текста в следующую ячейку таблицы Word
- Автоматический перенос слов на следующую строку таблицы в Word 2007
Как найти следующую таблицу?
При работе с многофункциональными современными редакторами текста, такими как, например, Microsoft Word, очень часто возникает потребность обсудить проблемы и нюансы работы. На портале о Microsoft Office Word вы узнаете про: как сделать чтобы нумерация сохранялась автоматически.
В зависимости от типа текста, цели, с которой он создается или редактируется, пользователю приходится осваивать те или иные функции, искать пути автоматизации своей работы, особенно это актуально для значительных объемов текста. Наш сайт о Microsoft Office Word даст ответ про: как убрать разделение на странице в ворде.
Также бывают трудности при переходе от одной версии Ворда к другой.
Помочь пользователям текстового редактора решили на сайте Ворд Эксперт и форуме сайта. На портале о Microsoft Office Word вы узнаете про: vba word найти и заменить.
Тут собрана вся необходимая информация, касающаяся программы, доступны полезные ссылки и списки литературы, выложены готовые ответы на самые стандартные вопросы, кроме того, оригинальные решения различных проблем при работе с программой. На портале о Microsoft Office Word вы узнаете про: укак написать макрос для защиты документа.
Например, на форуме вы найдете макросы для нумерации разделов, шаблоны оглавлений, принципы работы с горячими клавишами и многое другое. Наш сайт о Microsoft Office Word даст ответ про: рамочки на страницах.
Прежде всего, Ворд Эксперт, ориентирован на автоматизацию работы Ворда, тут обсуждаются разнообразные макросы и шаблоны, но также вы найдете сравнительные характеристики различных версий, обсуждение настроек программы и способов редактирования и форматирования тексов. На портале о Microsoft Office Word вы узнаете про: код активации для word 2010.
Кроме того, вы можете описать свою проблему в специальном подразделе и получить готовое решение.