![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 08.01.2010
Сообщений: 4
|
![]()
Имеется некоторый текст с приглашением(word) и маленькая БД(access), состоящая всего из одной таблицы. Необходимо используя DDE(Dynamic Data Exchange), написать прогу(VBA), которая будет открывать текстовый файл и вставлять из БД по порядку все имеющиеся в ней фамилии в текстовый файл(допустим в первую строчку) и сохранять каждый текстовый файл под новым именем. Клиентом является Excell, а серверами по очереди Access и Word.
Пока что я делаю для одного текстового файла, но несложно будет вставить часть проги в цикл и сделать для нужного числа. Проблема заключается в следующем: в 6 строке снизу я использую метод DDEPoke, чтобы записать в вордовский документ текст, взятый из БД, вставленный в Excell и помещенный в одну из переменных массива. Но почему-то не наблюдается требуемого результата, а именно значение из переменной не вставляется в вордовский документ. Еще одна проблема, какой командой мне потом сохранить вордовский документ под каким-н именем используя таки DDE(программа пишется на VBA из excell)? И вообще где найти список команд, которые используются в методе DDEExecute? Извиняюсь заранее если неправильно оформил код программы, т.к. вставляю его в первый раз. Dim ddeChannel, ddeChannel2 As Long Dim ns As Integer Dim data As Variant Dim chislo As Integer Sub Prigl() ReDim FIO(5) Dim Bd As Database Dim rs As Recordset Set Bd = OpenDatabase(ActiveWorkbook.Path & "\Priglashenie.mdb") Set rs = Bd.OpenRecordset("SELECT ФИО FROM гости", dbOpenDynaset) ns = 1 Do While Not rs.EOF ns = ns + 1 rs.MoveNext Loop chislo = ns rs.Close MsgBox ns On Error GoTo The_end Shell "C:\Program Files\Microsoft Office\Office12\MSaccess.exe", vbMinimizedNoFocus ddeChannel1 = DDEInitiate("MSAccess", "system") DDEExecute ddeChannel1, "[OpenDatabase ""D:\корпоративные системы\Priglashenie.mdb""]" ddeChannel2 = DDEInitiate("msaccess", "Priglashenie;table гости") data = DDERequest(ddeChannel2, "all") Worksheets("лист1").Range("1:5") = data For i = 1 To chislo FIO(i) = Cells(i, 1) Next DDETerminate ddeChannel1 DDETerminate ddeChannel2 Shell "C:\Program Files\Microsoft Office\Office12\winword.exe", vbMinimizedNoFocus ddeChannel1 = DDEInitiate("winword", "system") DDEExecute ddeChannel1, "[FileOpen ""D:\корпоративные системы\приглашение.docx""]" DDEExecute ddeChannel1, "[Startofdocument]" DDEExecute ddeChannel1, "[EditBookmark .name=""zakladka""]" DDEPoke ddeChannel1, "zakladka", FIO(1) DDETerminate ddeChannel1 Exit Sub The_end: MsgBox "ошибка вышла" End Sub |
![]() |
![]() |
![]() |
#2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
А зачем использовать DDE для работы в Word из Excel???
Создаёте экземпляр приложения Word, и работаете с ним - будет намного проще, и все функции Word-a будут доступны. Примеров на форуме множество: Код:
http://www.programmersforum.ru/showp...49&postcount=4 PS: На будущее - создавайте подобные темы в соответствующих разделах форума. Вероятность получить ответ значительно возрастёт. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 08.01.2010
Сообщений: 4
|
![]()
Вся фишка заключается в том, что мне нужно это сделать используя DDE. С созданием экземпляра какого-н типа я немного работал(не хвастаюсь что хорошо это знаю, просто сталкивался), а вот с DDE первый раз и где взять эти команды понятия не имею.
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 08.01.2010
Сообщений: 4
|
![]()
Так мне кто-н подскажет где найти команды DDEExecute?
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi и VBA (создание стрелки) | Kuraj | Общие вопросы Delphi | 4 | 09.01.2010 23:33 |
создание и использование семафоров(VBA) | vladmc | Помощь студентам | 1 | 09.01.2010 03:18 |
VBA создание списка | julius | Microsoft Office Excel | 7 | 05.01.2010 16:02 |
Создание таблицы через VBA | mchip | Microsoft Office Excel | 0 | 01.10.2009 23:50 |