Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: VBA: Ошибка при заполнении шаблона Word данными из Добавлено: 10.09.07 12:02  

Автор вопроса:  Андрей
Есть программка, которая берет из базы данных (путем простейшего select) данные и заполняет табличку Ворда.
Когда из базы берутся 35 или менее строк, то все работает нормально.
Но когода строк 36, то возникает ошибка:

?err.Description
Слияние в новый документ не было выполнено, поскольку все записи данных были пусты или ни одна запись данных не соответствовала условиям отбора.

?err.Number
5631

Кодинг:
Set objStickerTemplate = objWordApp.ActiveDocument
objStickerTemplate.MailMerge.MainDocumentType = wdFormLetters
objStickerTemplate.MailMerge.OpenDataSource Name:= _
sPathDB & "\CBSD_SP_CRM_vRegistrationList1.odc" _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:=sConnStr _
, SQLStatement:=sSQL, SQLStatement1:="", _
SubType:=wdMergeSubTypeOther
With objStickerTemplate.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With

Ошибка возникает на строке:
.Execute Pause:=False


Подскажите в чем тут может быть дело и как это исправить?

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 el-paso



Вопросов: 0
Ответов: 56
 Профиль | | #1 Добавлено: 11.09.07 01:13
Возможно, дело в асинхронности процесса загрузки исходных данных (т.е. данные еще не загрузились до конца, а слияние уже запустилось).

Попробуй перед .Execute вставить такой фрагмент:

Do: DoEvents: Until .State = wdMainAndDataSource


Этот фрагментик дожидается, когда объект MailMerge перейдет в состояние готовности к слиянию.

Ответить

Номер ответа: 2
Автор ответа:
 el-paso



Вопросов: 0
Ответов: 56
 Профиль | | #2 Добавлено: 11.09.07 01:18
Кхм..
А лучше даже, наверное, вставить фрагмент перед With .DataSource.
Иначе он будет искать последнюю запись на незавершенных данных.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам