Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Слияние в разные документы / 17 сообщений из 17, страница 1 из 1
29.04.2008, 22:19
    #35287232
Anjey aka PM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
Добрый день

У меня есть шаблон индивидуального учебного плана студента на 4 года, являющий собой документ на 28 листах

Мне нужно составить для каждого студента аналогичный документ, отличающийся только некоторыми полями (+ возможно вычисляемые даные). Этот вопрос я для себя решил, осталась только одна проблема: КАК выполнить слияние так чтобы для каждой записи в источнике даных для слияния создавался ОТДЕЛЬНЫЙ документ а не выполнялось слияние в один документ всех записей.

Если есть какие-нить советы, буду признателен!
...
Рейтинг: 0 / 0
30.04.2008, 15:45
    #35289065
Anjey aka PM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
идей нету?
...
Рейтинг: 0 / 0
30.04.2008, 16:02
    #35289123
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
Попробуй представить, что ты, как и мы, не имеешь представления ни об исходных данных ни об ожидаемом конечном результате. Думаешь, из твоего объяснения можно что-то понять? Вешай пример исходного и финального файлов с примерами данных.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
01.05.2008, 00:54
    #35289747
Anjey aka PM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
KL (XL)Попробуй представить, что ты, как и мы, не имеешь представления ни об исходных данных ни об ожидаемом конечном результате. Думаешь, из твоего объяснения можно что-то понять? Вешай пример исходного и финального файлов с примерами данных.

KL
[MVP - Microsoft Excel]

помоему это несущественно, хотя, конечно вывесить могу....

проблем со слиянием у меня нету, просто проблема чтоб на каждый файл при слиянии создавался НЕ новый раздел а новый документ

такой пример подойдет (см. атач)?

ЗЫ: офис 2007 либо 2003, так что вариант слияния всех записей в разные документы можно предлагать для любого из этих пакетов.
...
Рейтинг: 0 / 0
01.05.2008, 02:08
    #35289771
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
Anjey aka PMпомоему это несущественно, хотя, конечно вывесить могу....
такой пример подойдет (см. атач)?
Польза примера уже в том, что прояснилось главное: шаблон - это документ Word с 28 страницами после слияния, а не книга Excel с 28 листами :-)

попробуй запустить такой код из документа-шаблона (думаю, названия файлам можно присваивать и из какого либо места во вновь созданном документе):

Код: plaintext
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.
Sub Macro1()
    Dim i As Long
    Dim oMerge As MailMerge
    Dim oData As MailMergeDataSource
    
    Set oMerge = ActiveDocument.MailMerge
    Set oData = oMerge.DataSource
    
    Application.ScreenUpdating = False
    For i =  1  To oData.RecordCount
        With oData
            .FirstRecord = i
            .LastRecord = i
        End With
        With oMerge
            .Destination = wdSendToNewDocument
            .Execute Pause:=False
        End With
        With ActiveDocument
            .SaveAs ThisDocument.Path & "\Record " & Format(i, "0000") & ".doc"
            .Close
        End With
    Next i
    Set oData = Nothing
    Set oMerge = Nothing
    Application.ScreenUpdating = True
End Sub
...
Рейтинг: 0 / 0
01.05.2008, 02:23
    #35289775
Anjey aka PM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
Во, пасиб, это уже похоже на то что мне надо, еще бы знать, как в название документа поля из источника экселевского вставлять и тогда впринципе задача будет решена!
...
Рейтинг: 0 / 0
01.05.2008, 03:15
    #35289789
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
Вместо "ФИО" подставь реальное название поля.
Код: plaintext
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.
Sub Macro2()
    Dim i As Long
    Dim oMerge As MailMerge
    Dim oData As MailMergeDataSource
    
    Set oMerge = ActiveDocument.MailMerge
    Set oData = oMerge.DataSource
    
    Application.ScreenUpdating = False
    For i =  1  To oData.RecordCount
        With oData
            .FirstRecord = i
            .LastRecord = i
            .ActiveRecord = i
        End With
        With oMerge
            .Destination = wdSendToNewDocument
            .Execute Pause:=False
        End With
        With ActiveDocument
            .SaveAs ThisDocument.Path & "\" & oData.DataFields("ФИО").Value & ".doc"
            .Close
        End With
    Next i
    Set oData = Nothing
    Set oMerge = Nothing
    Application.ScreenUpdating = True
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
01.05.2008, 11:09
    #35289871
Anjey aka PM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
во, пасиб, а то бейсик совсем не знаю :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
10.12.2010, 12:40
    #37006812
VAT
VAT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
Супер гига спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
24.01.2014, 10:50
    #38536421
bit8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
Прошу помощи,
Воспользовался выше приведенным макросом, но .RecordCount содержит значение -1 и соответственно цикл не работает
Немного почитал, пишут что данная переменная может и не быть инициализирована поскольку нельзя наперед знать о кол-ве данных в DataSource.
Вопрос, а как тогда обойти все значения в данном объекте?
...
Рейтинг: 0 / 0
24.01.2014, 10:54
    #38536438
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
bit8 , сделайте .MoveLast, а потом уже спрашивайте, сколько в рекордсете записей...
...
Рейтинг: 0 / 0
24.01.2014, 12:08
    #38536608
bit8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
Akina,

большое спасибо за быстрый ответ

Данный объект не содержит такого метода, и подобных нет
...
Рейтинг: 0 / 0
24.01.2014, 13:47
    #38536843
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
Ааа, это ж не рекордсет... пардон.
Тогда см. http://msdn.microsoft.com/en-us/library/office/aa196486(v=office.11).aspx
Там прежде чем первый раз обращаться к свойству, выполняется
Код: vbnet
1.
MailMergeDataSource.ActiveRecord = wdFirstRecord

Попробуй.
...
Рейтинг: 0 / 0
24.01.2014, 13:47
    #38536846
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
Впрочем, вероятно, есть и wdLastRecord...
...
Рейтинг: 0 / 0
24.01.2014, 14:39
    #38536947
bit8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
Akina,
Огромное спасибо за помощь

Не очень понимаю что это за переменные (wdFirstRecord, wdLastRecord), но вроде работает, окно только нового документа открывается закрывается много раз, можно как-то это отключить?

Код: vbnet
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.
32.
33.
34.
35.
36.
Sub Macro1()
Dim i As Long
Dim N As Long
    Dim oMerge As MailMerge
    Dim oData As MailMergeDataSource
    Dim DocPath As String
    
    Set oMerge = ActiveDocument.MailMerge
    Set oData = oMerge.DataSource
    DocPath = ActiveDocument.Path
    
    oData.ActiveRecord = wdLastRecord
    N = oData.ActiveRecord
    
    Application.ScreenUpdating = False
    
    For i = 1 To N
        With oData
            .FirstRecord = i
            .LastRecord = i
        End With
        With oMerge
            .Destination = wdSendToNewDocument
            .Execute Pause:=False
        End With
        With ActiveDocument
            .SaveAs DocPath & "\Record " & Format(i, "0000") & ".doc"
            .Close
        End With
    Next i

    Set oData = Nothing
    Set oMerge = Nothing
    Application.ScreenUpdating = True
    
End Sub
...
Рейтинг: 0 / 0
24.01.2014, 16:18
    #38537121
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
bit8Не очень понимаю что это за переменные (wdFirstRecord, wdLastRecord)Это не переменные, а определённые в библиотеке константы.
...
Рейтинг: 0 / 0
25.01.2014, 12:42
    #38537631
bit8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слияние в разные документы
Akina,
Какие-то специальные числа которые при присвоении анализируются
Как-то так да?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Слияние в разные документы / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]