Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Слияние с документом Excel


Автор: CrazyTactic 21.10.2010, 18:41
Начнем историю с того, что надо было выполнить слияние с документом *.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?

Автор: Akina 21.10.2010, 19:45
Адепту MySQl при написании запросов под MS Jet следует изучить различия в диалектах.
Код

 SQLStatement:="SELECT * FROM [Лист1$] WHERE [Поле1]=""Значение"""

Автор: CrazyTactic 21.10.2010, 20:03
Спасибо! Попробую данный метод

Автор: CrazyTactic 22.10.2010, 18:49
Отлично! Все работает!

Автор: petrova93 26.10.2010, 20:54
Помогите напичатать програму у VBA)
У масиві Е(m,n)з довільними значеннями користуючись методом вибору мінімального елемента,відсортувати усі елементи порядково у порядку зростання,починаючи з елемента е11 і закінчуючи елементом е mn , масив Е вивести до і після перетворення.
Спасибо большое зарание!)

Автор: Bugmaker 28.10.2010, 10:12
Вроде бы ничего сложного, но у меня напряг с бусурманскими, кроме английского.
ыло бы неплохо по-русски изложить требования.

Автор: Akina 28.10.2010, 10:24
А заодно перечитать Правила. Особенно пункт 10.

Автор: mihanik 29.10.2010, 21:19
Модератор: Пожалуйста, один топик - один вопрос.

Автор: petrova93 24.11.2010, 02:43
за допомогою методу дотичних знайти значення рівняння на одному з відрізків (x^3+4*x^2+6*x-1=0)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)