Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
836 / 486 / 186
Регистрация: 09.03.2009
Сообщений: 1,675
1
Word

Заменить таблицу в Word

17.11.2022, 22:42. Показов 726. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер!
Имеется небольшой затык. Есть 2 документа. Нужно из из документа 1 взять таблицу 2-ю по счету, ее удалить и поставить на ее место 2-ю таблицу из 2-го документа. Потом то же с 5-й таблицей. Удалять - потому что они с разным количеством строк и при просто вставке выходит не так. Или я не так делаю.

Собственно вопрос: как заменить таблицу? Сейчас у меня так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   Set wd1 = Documents.Open(FileName:=ThisDocument.Path & "\" & FN1)
   Set wd2 = Documents.Open(FileName:=ThisDocument.Path & "\" & FN2)
 
' документ 1: выбрать таблицу 2 и удалить, курсор остается на ее месте
wd1.Tables(2).Select
Selection.Cut
 
' документ 2: выбрать таблицу 2 и скопировать
wd2.Tables(2).Select
Selection.Copy
 
' документ 1: вставить таблицу в точку вставки
wd1.Activate
Selection.Paste
 
' ... дальше
Но думается мне, можно и без Select. Только не пойму как. Подскажите?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2022, 22:42
Ответы с готовыми решениями:

Поиск строк в шаблоне в word и вывод в таблицу в другой файл word
Здравствуйте, требуется помощь! Имеется шаблон документа в word в котором есть три строки, которые...

Добавление срок в таблицу Word при заполнении документа Word из данных Excel
Всем привет! Я новичок в этом деле и нужна помощь. Есть таблица Excel с данными на основании...

Как связать таблицу Word и таблицу Excel ?
Существует таблица в Word. Необходимо: - создать идентичную таблицу в Excel, - при внесении...

Таблицу в Word
Привет всем! Задача перегнать таблицу (запрос) в Ворд. Передаю по номеру таблицы. Dim...

4
Динохромный
1400 / 763 / 284
Регистрация: 22.12.2015
Сообщений: 2,387
18.11.2022, 13:26 2
Цитата Сообщение от Zeag Посмотреть сообщение
Но думается мне, можно и без Select. Только не пойму как.
Насколько я понимаю - речь про wd1.Tables.Item(2).Range.Cut или вы не это имеете в виду?
0
836 / 486 / 186
Регистрация: 09.03.2009
Сообщений: 1,675
18.11.2022, 19:54  [ТС] 3
Уважаемый Dinoxromniy, спасибо, что откликнулись. Есть пары файлов 18 и 19, одну пару прилагаю. Нужно из 18 взять таблицы II и V и заменить ими соответствующие таблицы в 19. Чем и как это лучше сделать? Хотелось бы через указатели, чтобы не активировать файлы - если возможно. Указатель wd1 смотрит на 18, wd2 - на 19. В таблицах может быть разное количество строк, а то бы просто переписал значения из одной в другую.
Вложения
Тип файла: docx Иванов Иван 18.docx (53.2 Кб, 15 просмотров)
Тип файла: docx Иванов Иван 19.docx (53.2 Кб, 12 просмотров)
0
Динохромный
1400 / 763 / 284
Регистрация: 22.12.2015
Сообщений: 2,387
19.11.2022, 08:56 4
Лучший ответ Сообщение было отмечено Zeag как решение

Решение

Цитата Сообщение от Zeag Посмотреть сообщение
Чем и как это лучше сделать?
Не уверен, какой способ оптимальнее, я бы наверное делал что-то вроде кода ниже:

Visual Basic
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
27
Option Explicit
Sub rt()
Dim wd1, wd2, FN1 As String, FN2 As String, rngObj As Range, i As Integer
FN1 = "Иванов Иван 18.docx"
FN2 = "Иванов Иван 19.docx"
 
    Set wd1 = Documents.Open(FileName:=ThisDocument.Path & "\" & FN1)
    Set wd2 = Documents.Open(FileName:=ThisDocument.Path & "\" & FN2)
    
    i = 4
    
    Set rngObj = wd2.Range(wd2.Tables.Item(i).Range.Start, wd2.Tables.Item(i).Range.Start)
    wd1.Tables.Item(i).Range.Cut
    wd2.Tables.Item(i).Delete
    rngObj.Paste
    
    i = 2
    
    Set rngObj = wd2.Range(wd2.Tables.Item(i).Range.Start, wd2.Tables.Item(i).Range.Start)
    wd1.Tables.Item(i).Range.Cut
    wd2.Tables.Item(i).Delete
    rngObj.Paste
    
    Set wd1 = Nothing
    Set wd2 = Nothing
    Set rngObj = Nothing
End Sub
Код по аналогии с вашим нужно сохранить в отдельной книге и сохранить ее в той же папке, что и обрабатываемые. Таблицы нужно перечислять от большего индекса к меньшему, т.к. из исходного файла таблица удаляется (не очень понял - нужно ли их удалять или нет).
1
836 / 486 / 186
Регистрация: 09.03.2009
Сообщений: 1,675
19.11.2022, 18:28  [ТС] 5
Dinoxromniy, большое спасибо! Записал Ваш способ себе в копилку, буду теперь знать. Как понимаю, в rngObj хранится точка начала таблицы. Я ее нашел путем wd1.Tables(i).Select, но не допер, как сохранить или найти без селекта. А удалять надо, а то таблица "прилипает" к старой. Спасибо!
0
19.11.2022, 18:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2022, 18:28
Помогаю со студенческими работами здесь

Скопировать таблицу Word
Как можно скопировать таблицу Word? Т.е. создать таблицу и заполнить ее данными? Таблица готовая...

Добавить таблицу в Word
Как вставить таблицу в Word? Первая вначале документа создается легко, а как после неё создать...

Таблицу Word в Excel
Всем доброго здоровичка!!! VB2008 Такая задачка: В папке есть ворд файлы. В каждом таблицы....

Создать таблицу в word
В Word необходимо создать таблицу, с разной высотой строк в столбцах по примеру: слева 3 колонки по...

Добавление строк в таблицу Word
Доброго времени суток, дорогие форумчане! Жисть поставила такую задачу: Есть каталог C:\111, где...

Нарисовать таблицу из Excell в Word
Собственно Sabj. Генерирую лист запроса Word из Excell'я. На данный момент получается только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru