Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Office Word
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.59/44: Рейтинг темы: голосов - 44, средняя оценка - 4.59
lazyal
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 18
1

Автоматический перенос данных между документами

17.10.2010, 23:42. Просмотров 8719. Ответов 12
Метки нет (Все метки)

Возникла очередная заминка, требующая общественной помощи в виде индивидуальных решений
Имеется документ №1 в виде таблицы и шаблонный документ №2, куда необходимо вставить данные из определённых ячеек таблицы из №1. При этом документ №2 создавался для печати на бланке, я пробовал несколько вариантов - с таблицей и полями формы, т.е., вставка данных должна соответствовать определённому формату (размер шрифта, расположение на странице). Пока операция проводится вручную. Копируются поочерёдно данные из №1 в №2, затем документ отправляется на печать. Вот как бы это дело автоматизировать? Пробовал сделать макрос, чтоб он при открытии №2 и активации макроса брал данные из документа, открытого прежде (переход по Alt+Tab) и вносил в графы. Почему-то вышла привязка к тому документу, на котором приводился пример для работы макроса. Если есть множество однотипных документов, как сделать так, чтоб указав расположение документа получить данные из определённых его участков (ячеек таблицы)? Для наглядности прикрепляю образцы документов.
0
Вложения
Тип файла: doc 1.doc (41.5 Кб, 132 просмотров)
Тип файла: doc 2.doc (25.5 Кб, 98 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 23:42
Ответы с готовыми решениями:

Взаимосвязь между документами
Уважаемые знатоки Ворда, У меня к вам вопрос, есть ли в Ворде возможность создавать взаимосвязь...

Перенос данных между таблицами разных документов
Друзья! Кто поможет разобраться с такой проблемой? Приходится очень часто переносить данные из...

Синхронность между двумя документами Word и Excel
Доброго времени суток Помогите пожалуйста с решением данной задачи. Допустим, имеется база...

В чем разница между этими двумя документами ?
Не могу разобраться какие изменения внесены в документ пример пункта_до2_new. При выделении текста...

Автоматический перенос с одной таблице в word в другую
Неделю ломаю голову как сделать. Есть онлайн программа, которая создает ценники по выбранному...

12
Busine2009
Заблокирован
18.10.2010, 09:49 2
lazyal,
если надо брать данные из закрытого документа №1:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub m_3()
Dim oDocument1 As Word.Document
Set oDocument1 = GetObject("E:\_Рабочий стол\1.doc")
Set oDocument1Table1 = oDocument1.Tables(1)
ActiveDocument.Tables(1).Cell(1, 1).Range = Left(oDocument1Table1.Cell(30, 2).Range, _
    Len(oDocument1Table1.Cell(30, 2).Range) - 2)
ActiveDocument.Tables(1).Cell(1, 2).Range = Left(oDocument1Table1.Cell(31, 2).Range, _
    Len(oDocument1Table1.Cell(31, 2).Range) - 2)
ActiveDocument.Tables(1).Cell(1, 3).Range = Left(oDocument1Table1.Cell(32, 2).Range, _
    Len(oDocument1Table1.Cell(32, 2).Range) - 2)
ActiveDocument.Tables(1).Cell(1, 4).Range = Left(oDocument1Table1.Cell(26, 7).Range, _
    Len(oDocument1Table1.Cell(26, 7).Range) - 2)
oDocument1.Close
End Sub
Если надо брать данные из открытого документа №1:
надо удалить 13 строку вышеуказанного кода.

По поводу макросов темы надо создавать вот здесь:
https://www.cyberforum.ru/vba/

Может в данном случае использовать "Слияние"?
0
lazyal
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 18
18.10.2010, 17:57  [ТС] 3
1 - Muchas gracias! Буду изучать.
2 - Замечание учтено.
3 - Пока не знаю, что за зверь, нужно почитать.
0
Busine2009
Заблокирован
18.10.2010, 18:01 4
lazyal,
слияние - это когда надо один и тот же документ распечатать для 100 человек, и в этих документах разные только ФИО (в этом роде).
0
lazyal
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 18
19.10.2010, 09:20  [ТС] 5
В третьей строке указан фиксированный документ. Я, видимо, неточно сформулировал условия. А как поступить, если нужно взять из папки с несколькими файлами один определённый, причём, в зависимости от надобности - различный для каждого случая? Алгоритм такой:
- открывается документ №2 (можно рядом открыть требуемый №1 при необходимости, для работы макроса)
- в документ №2 вносятся данные из №1
- печать документа №2 (это можно уже сделать вручную)
- сохранение документа №2 не требуется
0
Busine2009
Заблокирован
19.10.2010, 10:57 6
lazyal,
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
28
29
30
31
Sub m_3()
    Dim oDocument1 As Word.Document
    Dim vИмяФайла As String
    Dim vОтмена As Long
    With Application.FileDialog(msoFileDialogFilePicker)
        vОтмена = .Show
        .AllowMultiSelect = False
        If vОтмена = 0 Then
            Exit Sub
        Else
            vИмяФайла = .SelectedItems(1)
        End If
    End With
    Set oDocument1 = GetObject(vИмяФайла)
    Set oDocument1Table1 = oDocument1.Tables(1)
    On Error GoTo metka
    ActiveDocument.Tables(1).Cell(1, 1).Range = Left(oDocument1Table1.Cell(30, 2).Range, _
        Len(oDocument1Table1.Cell(30, 2).Range) - 2)
    ActiveDocument.Tables(1).Cell(1, 2).Range = Left(oDocument1Table1.Cell(31, 2).Range, _
        Len(oDocument1Table1.Cell(31, 2).Range) - 2)
    ActiveDocument.Tables(1).Cell(1, 3).Range = Left(oDocument1Table1.Cell(32, 2).Range, _
        Len(oDocument1Table1.Cell(32, 2).Range) - 2)
    ActiveDocument.Tables(1).Cell(1, 4).Range = Left(oDocument1Table1.Cell(26, 7).Range, _
        Len(oDocument1Table1.Cell(26, 7).Range) - 2)
    oDocument1.Close
    Exit Sub
metka:
    oDocument1.Close
    MsgBox "Ошибка. Попробуйте ещё раз." & vbCr & _
        "Скорее всего таблицы не соответствуют шаблонам (отличается количество строк и столбцов)!", vbCritical
End Sub
1
lazyal
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 18
19.10.2010, 11:36  [ТС] 7
Да, это именно то, что нужно. А можно ли добавить в текст макроса опцию автоматического форматирования в ячейках 1-3 документа №2, чтоб выставлялся шрифт 8 размера (в исходном документе №1 стоит 12 и при вставке получается две страницы, а нужна только одна).
0
Busine2009
Заблокирован
19.10.2010, 11:57 8
lazyal,
а почему вы сразу не сделали шрифт в ячейках 1 - 3 документа №2 размером 8 пт? Сделайте в источнике или где-то там в этих ячейках шрифт нужного размера и вставляемый текст из документа №1 будет размером 8 пт.

Сделайте отображение непечатаемых символов (см. рис.) и сделайте скриншот нижней части первой страницы Документа №2 и вставьте сюда.
0
Миниатюры
Автоматический перенос данных между документами  
lazyal
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 18
19.10.2010, 13:26  [ТС] 9
Вот он.
Я пытался сделать по умолчанию шрифт в этих ячейках 8, но это срабатывает, почему-то, только если в документе поля с жестко указанными свойствами. При вставке в таблицу формат у меня наследуется из документа №1.
0
Миниатюры
Автоматический перенос данных между документами  
Busine2009
Заблокирован
19.10.2010, 13:34 10
lazyal,
зачем делать что-то по умолчанию: просто выдели в источнике "Документ №2" ячейки 1 - 3 и примени шрифт размером 8 пт и нажми "Сохранить".

Почему, получается 2 страницы из одной - не знаю. Чтобы этого не было, сделай следующее: сделай верхнее поле 2 см и Файл - Параметры страницы... - вкладка "Источник бумаги" - Вертикальное выравнивание "По нижнему краю" - Окей.
0
lazyal
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 18
19.10.2010, 13:45  [ТС] 11
Действительно, всё получилось. Очередной раз благодарю за помощь.
0
Busine2009
Заблокирован
19.10.2010, 13:51 12
lazyal,
а ты скриншот делал до применения макроса или после? Я не уточнил, мне нужен был скриншот низа первой страницы Документа №2 после выполнения макроса.
И верхнее поле в Документе №2 сделай 2 см (ну или любое другое, но чтобы было обыкновенным по размеру).
0
lazyal
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 18
19.10.2010, 14:13  [ТС] 13
Скриншот сделан с чистого документа до выполнения макроса. Верхнее поле нужно именно 24 см, так как печататься будет текст на частично заполненном бланке, на расстоянии 24 см от верхнего края листа. Собственно, макрос работает правильно, выполняет то, что и требовалось. Так что, в данном случае, можно не ломать голову над мелочами. Для этого обязуюсь предоставить материал в новых темах
0
19.10.2010, 14:13
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2010, 14:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Автоматический перенос нового абзаца на новую страницу
Есть ли возможность настроить документ таким образом что бы новый абзац автоматически переносился...

Перенос данных между документами без использования буфера обмена
Имеется word-файл-шаблон, в который вставлены DocVariable(ы), Холсты, Закладки и т.п.. В открытом...

Автоматический перенос данных
Можно ли с помощью формулы переносить данные "в конце дня" на соответствующий календарю день ?


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.