Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 9

Заполнить таблицу Word за один заход

12.11.2020, 02:14. Показов 4015. Ответов 24
Метки нет (Все метки)

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

Как ни гуглил - подходящего решения к сожалению не нашлось, так что обращаюсь за советом.

Задачка следующая: необходимо заполнить таблицу в Word, в которой фиксировано 10 столбцов и N строк. Количество строк определяется заранее исходя из параметров исходного файла с данными. На данный момент работает следующим образом: добавляем строку - заполняем - добавляем строку - заполняем, повторяем N раз. И такое решение при больших объемах (больше 1000 строк например) вполне ожидаемо работает крайне медленно.

Отрисовать таблицу сразу с 1000 строк - не проблема. Но можно ли каким-то образом так же сразу заполнить её данными, чтобы не делать это построчно? Если да, то каким образом?

Word необходимо использовать т.к. есть ещё нужный текст вокруг таблицы.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.11.2020, 02:14
Ответы с готовыми решениями:

Заполнить таблицу в один клик
Здравствуйте, подскажите пожалуйста, как в Access 2007 сделать так, чтобы при нажатии на кнопку первая ячейка, первого строки (А1) была...

Создать таблицу в Word и заполнить её данными из массива
Добрый день, товарищи! Возникла задача - не могу решить.. Прошу помощи.. Есть массив arr(6;i) - 7 столбцов, и минимум 1 строка,...

Помогите с юартом, заход в прерывание только один раз ((((
Помогите с юартом, заход в прерывание только один раз (((( #include "AT91SAM7S64.h" #define EXT_OC 18432000 // External...

24
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
12.11.2020, 05:49
Цитата Сообщение от keymaster1 Посмотреть сообщение
Если да, то каким образом?
Или набивать вручную, или из файла. Если из файла, то каким образом в нём окажутся данные?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
12.11.2020, 09:54
Конечно, можно. Примерно так:

Visual Basic
1
2
3
4
5
6
7
8
9
Dim tbl as table
 
      set tbl=...
 
      for row=... to ...
           for col=... to ...
                tbl.cells(row,col).range.text=...
           next
      next
0
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 9
12.11.2020, 10:42  [ТС]
Данные для заполнения считываются из другого файла за один подход через ReadAll и потом лежат в массиве.

Добавлено через 47 минут
Примерно так
Т.е. таблица делается целиком заранее, а затем вставляется в документ? К сожалению из примера пока что не совсем понятно, как вставить имеющиеся данные, которые лежат в массиве из N элементов, внутри каждого элемента - строка вида a,b,c,d и, соответственно, a предназначается для первого столбца, b для второго и т.д. Бежать построчно?

Если где-то есть информация на эту тему или пример кода - буду рад изучить.
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
12.11.2020, 14:16
Цитата Сообщение от keymaster1 Посмотреть сообщение
из примера пока что не совсем понятно
Фигушки. Всё понятно row - строка, Column - столбец.
Цитата Сообщение от keymaster1 Посмотреть сообщение
10 столбцов и N строк.
Например, ваш массив, считанный из файла:
Visual Basic
1
2
3
4
5
Option Base 1
Dim Data(10, N) As то, что вам нужно
'.......................
Строка кода выше №7:
                tbl.cells(row,col).range.text= Data(счётчик из: for col=... to ..., счётчик из: for row=... to ...)
Как-то так, если чего не "зевнул".
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
12.11.2020, 15:04
тс спрашивает есть ли возможность выгрузить массив в таблицу как это делается в ексель. Без циклов. Одной строкой
0
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 9
12.11.2020, 15:15  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
тс спрашивает есть ли возможность выгрузить массив в таблицу как это делается в ексель. Без циклов. Одной строкой
Да, именно так, спасибо. Т.е. пробежаться циклом в коде, собрать всё в какой-то объект, а затем этот объект Insert to Table1 условно. Но с сохранением структуры таблицы разумеется.
0
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
12.11.2020, 16:33
keymaster1, макрос запишите и перенесите куда нужно. Целые базы выгружал с помощью макросов записывает разметку и прочие и потом переносил в с#. С разметка и, колонтитулами и прочей ерундой.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
13.11.2020, 22:37
Цитата Сообщение от keymaster1 Посмотреть сообщение
Т.е. пробежаться циклом в коде, собрать всё в какой-то объект, а затем этот объект Insert to Table1 условно.
- циклом все равно пробегаться, то чем не устраивает мое решение?
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
14.11.2020, 14:51
скоростью обработки
вполне ожидаемо работает крайне медленно
0
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 9
15.11.2020, 11:48  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
скоростью обработки
Да, таблица в 2000 строк например на нормальной машине заполняется построчно за 20 минут, на машине послабее - в два раза дольше.

Может быть формировать предварительно в экселе, а затем как-то перекидывать готовую таблицу целиком в ворд?
0
 Аватар для Rh2Dark
32 / 32 / 0
Регистрация: 05.11.2020
Сообщений: 102
15.11.2020, 12:11
Цитата Сообщение от keymaster1 Посмотреть сообщение
Может быть формировать предварительно в экселе, а затем как-то перекидывать готовую таблицу целиком в ворд?
Это будет еще дольше, с учетом того что тормоза еще и с экселем суммируются.
Как то мы на работе переколбасивали эксельные данные в таблице с больше чем 1000 строк и этот процесс занимал продолжительное время (~минут 5-10). Но нам удалось ускорить этот процесс раз в ~10, отключив перерисовку листа. Может в Ворде также поступить?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
15.11.2020, 16:34
Цитата Сообщение от keymaster1 Посмотреть сообщение
нормальной машине заполняется построчно за 20 минут,
- вы при заполнении таблицы автообновление отключали? Рекомендую!

Добавлено через 17 минут
Вот этот код (в обоих режимах) выполняется у меня около 2 мин:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub main()
Dim tbl As Table
    Application.ScreenUpdating = False
        Set tbl = ThisDocument.Tables.Add(ThisDocument.Range, 2000, 5)
    Start$ = Time()
    For i% = 1 To 2000
        For j% = 1 To 5
            tbl.Cell(i%, j%).Range.Text = 2 * i% + 1
        Next j%
    Next i%
    Finish$ = Time()
    MsgBox Start$ + " " + Finish$
End Sub
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,932
Записей в блоге: 4
15.11.2020, 16:46
еще в 1997 пришлось набивать данные в таблицы ворд, квалификация операторов нулевая
поэтому показала операторам, как уменьшить количество ошибок и ускориться

набивали через разделитель и только заглавными
ИВАНОВ;ИВАН;ИВАНОВИЧ;11/01/1990;СЛЕСАРЬ
ПЕТРОВ;ЮРИЙ;. . . .
..
затем все выделили и через ВСТАВКА+ПРЕОБРАЗОВАТЬ В ТАБЛИЦУ+ВЫБОР РАЗДЕЛИТЕЛЯ преобразовывали в таблицу
затем оставалось заменить регистр для некоторых столбцов
0
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
15.11.2020, 17:39
Цитата Сообщение от keymaster1 Посмотреть сообщение
Заполнить таблицу Word за один заход
У нас традиция - заполнять таблицы в ворде , а тексты писать в экселе.
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
15.11.2020, 18:52
Действительно, чегоб копипаст не применить?
Из Экселя в Ворд, одним движением всю таблицу.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
15.11.2020, 19:19
Hugo121,
А пример?
Заинтересовала тема
Past работает. Достаточно быстро
А как загнать в буфер массив?
Нашел только это:
можно ли массив перевести в буфер обмена
Можно. Надо собрать всё в одну строковую переменную, при этом элементы одной строки разделяются vbTab, а сами строки - vbNewLine, после чего поместить полученную строку в буфер обмена методом Clipboard.SetText (предварительно рекомендуется очистить буфер методом Clipboard.Clear).
Добавлено через 56 секунд
проверить сегодня не смогу

Добавлено через 1 минуту
Past пробовал в новосозданную таблицу в ворду
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
15.11.2020, 19:41
Ну может создать временный лист, его заполнить данными (быстренько выгрузить массив например), Copy эту область и в Paste в Ворд.
Потому что просто текст с табами и переводом строк у меня Ворд как таблицу не воспринял.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
15.11.2020, 19:54
как таблицу не воспринял
Так создать сначала таблицу программно и в неё вставлять
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
15.11.2020, 19:57
Вообще наверное вариант!
Создал в блокноте текст с табами, 3х3
Создал в Ворде пустую таблицу 3х3
Скопировал текст
Выделили созданную таблицу, Paste
OK
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.11.2020, 19:57
Помогаю со студенческими работами здесь

Работа с COM портом запись и чтение в один заход-как сделать?
Столкнулся с тем что оборудование которое прицеплено к компорту не отвечает если сразу же после отправки пакета затребовать у него...

Напишите программу для нахождения максимального числа ягод, которое может собрать за один заход собирающий модуль
Считаю, что крайне нагло просить сделать решение этой задаче, но я в отчаянии... Итак, вот задача. Я её сократил, но смысл не...

Алгоритм, вычисляющий восход-заход солнца и восход-заход луны.
Найден алгоритм, написанный на BASIC и вычисляющий восход-заход солнца и восход-заход луны. Есть ли смысл перенести это детище на АСМ? ...

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru