Начнем историю с того, что надо было выполнить слияние с документом *.xls. Проблем не возникло, нужные поля подставлялись, все работало. Но, при этом, при переносе документов на другой компьютер, приходилось заново выбирать документ для слияния, т. е. путь сохранялся абсолютным, при этом документ ворда и книга excel находились в одной папке,и конечно, напрашивался относительный путь, но как его поставить, в ворде не нашел. Подсказали сделать макрос, ну ладно, впринципе не проблема, макрос сделал, вот что получилось:
| Код | ActiveDocument.MailMerge.MainDocumentType = wdFormLetters ActiveDocument.MailMerge.OpenDataSource Name:= _ ThisDocument.Path & "\Книга1.xlsx", ConfirmConversions:=False, _ ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _ PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _ WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _ Connection:= _ "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & ThisDocument.Path & "\Книга1.xlsx;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mod" _ , SQLStatement:="SELECT * FROM `Лист1$`", SQLStatement1:="", SubType:= _ wdMergeSubTypeAccess
|
И все заработало, ура, вроде бы хорошо, но.. этого не достаточно. Необходимо было сделать выборку по полям таблицы, чтобы последние 2 строчки выглядели примерно так:
| Код | , SQLStatement:="SELECT * FROM `Лист1$` WHERE `Поле1`='Значение'", SQLStatement1:="", SubType:= _ wdMergeSubTypeAccess
|
Это был окончательный макрос, и работал он как часы, вот только в 2007. В 2003 - ни в какую. Пишет, что не может отрыть источник данных.
Кстати, если последние 2 строки не изменять:
| Код | , SQLStatement:="SELECT * FROM `Лист1$`", SQLStatement1:="", SubType:= _ wdMergeSubTypeAccess
|
то работает это и в 2003, и в 2007, но мне нужна именно выборка, а не все данные подряд. Так вот, как все это осуществить в 2003?
|