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

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

12.11.2020, 02:14. Показов 4087. Ответов 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
1431 / 448 / 78
Регистрация: 24.09.2017
Сообщений: 2,532
Записей в блоге: 23
12.11.2020, 05:49
Цитата Сообщение от keymaster1 Посмотреть сообщение
Если да, то каким образом?
Или набивать вручную, или из файла. Если из файла, то каким образом в нём окажутся данные?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38193 / 21126 / 4309
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 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
1431 / 448 / 78
Регистрация: 24.09.2017
Сообщений: 2,532
Записей в блоге: 23
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
38193 / 21126 / 4309
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 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
38193 / 21126 / 4309
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 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,937
Записей в блоге: 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
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
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
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
15.11.2020, 19:41
Ну может создать временный лист, его заполнить данными (быстренько выгрузить массив например), Copy эту область и в Paste в Ворд.
Потому что просто текст с табами и переводом строк у меня Ворд как таблицу не воспринял.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
15.11.2020, 19:54
как таблицу не воспринял
Так создать сначала таблицу программно и в неё вставлять
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
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
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru