powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Слияние в разные документы
17 сообщений из 17, страница 1 из 1
Слияние в разные документы
    #35287232
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день

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

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

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

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

KL
[MVP - Microsoft Excel]

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

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

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

ЗЫ: офис 2007 либо 2003, так что вариант слияния всех записей в разные документы можно предлагать для любого из этих пакетов.
...
Рейтинг: 0 / 0
Слияние в разные документы
    #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
Слияние в разные документы
    #35289775
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во, пасиб, это уже похоже на то что мне надо, еще бы знать, как в название документа поля из источника экселевского вставлять и тогда впринципе задача будет решена!
...
Рейтинг: 0 / 0
Слияние в разные документы
    #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
Слияние в разные документы
    #35289871
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во, пасиб, а то бейсик совсем не знаю :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Слияние в разные документы
    #37006812
VAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер гига спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Слияние в разные документы
    #38536421
bit8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу помощи,
Воспользовался выше приведенным макросом, но .RecordCount содержит значение -1 и соответственно цикл не работает
Немного почитал, пишут что данная переменная может и не быть инициализирована поскольку нельзя наперед знать о кол-ве данных в DataSource.
Вопрос, а как тогда обойти все значения в данном объекте?
...
Рейтинг: 0 / 0
Слияние в разные документы
    #38536438
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bit8 , сделайте .MoveLast, а потом уже спрашивайте, сколько в рекордсете записей...
...
Рейтинг: 0 / 0
Слияние в разные документы
    #38536608
bit8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

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

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

Попробуй.
...
Рейтинг: 0 / 0
Слияние в разные документы
    #38536846
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впрочем, вероятно, есть и wdLastRecord...
...
Рейтинг: 0 / 0
Слияние в разные документы
    #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
Слияние в разные документы
    #38537121
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bit8Не очень понимаю что это за переменные (wdFirstRecord, wdLastRecord)Это не переменные, а определённые в библиотеке константы.
...
Рейтинг: 0 / 0
Слияние в разные документы
    #38537631
bit8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Какие-то специальные числа которые при присвоении анализируются
Как-то так да?
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Слияние в разные документы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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