singlepost

VBA, OLE, Access << На главную или назад  

Здравствуйте господа коллеги-программеры ;)

Вот такой вопросик возник. Запускаем Access создаём БД, в ней табличку с полем типа OLE. Для того, чтобы добавить в неё объект выполняем щелчок правой кнопкой мыши выбираем объект(ну например Word из файла). В таблицу записывается объект Wordи по 2-ному клику – открывается MS Word. Причём на записи в табличке написано "Объект Microsoft Word". Так вот возник вопрос – каким образом проделать те же самые действия программно на VBA(без создания формы и присоединённой рамки объекта!!!)??? Есть возможность такая???

Заранее спасибо!

11 ответов в теме “VBA, OLE, Access”

  1. 8
    Леонид Максимов ответил:

    когда говоришь OpenDatabase, передаешь юзернейм и пароль. при этом DBEngine должен использовать соответствующий workgroup-файл.

  2. 7
    Юрий Пискунов ответил:

    Леонид maxleo Максимов, пасибо за помощь!

    В принципе задачу я выполнил…правда не обошлось без "хитрых" трюков(в народе – геморроя ;) и с присоединённой рамкой объекта! Больше не знаю как реализовать.Завтра выложу методику решения поставленной задачи!

    И появился ещё один вопрос: как с помощью TAccessApplication соединяться с базой, у которой есть пароль?

  3. 6
    Юрий Пискунов ответил:

    Конечно заметил ) если бы нет – не спрашивал бы. А VBA здесь при том, что тот, кто поможетмне решить данную задачу на VBA(без использования этой рамки) автоматически поможет мне в решении исходной поставленной задачи…на С++. Это я Вам гарантирую! ;) Если (уж если совсем гении найдутся) кто выложит описание формата данных, по которым Microsoft пишет эти объекты в Access, то задача считай решена. Но как показал мой небольшой анализ(сохранение в двоичном виде данных записанных в записи) в двух случаях – они ооочень отличаются, очень. И "простым" добавлением какого-нибудь заголовка или/и служебной информации это необходится… У них своя специфика. Погуглил в инете – говорят Miscrosoft не задокументировала это дело…

  4. 5
    Леонид Максимов ответил:

    тогда при чем здесь VBA? для VBA приведенный способ решения – самый простой в реализации и использовании (все остальные требуют дополнительных знаний о COM-интерфейсах и способах их использования в VBA).

    вот например, прочитайте то, что запишет ваш TOleContainer и то, что запишет присоединенная рамка. заметили разницу?

  5. 4
    Юрий Пискунов ответил:

    Да…ещё, при создании рамки на C++, у неё не выполняется метод set_Action(short) (аналог свойства Action на VBA)

  6. 3
    Юрий Пискунов ответил:

    Ну во-первых тем, чтов интернете только такой способ решения задачи, а хотелось бы узнать истинное решение …ну а во-вторых, у меня просто задача всё это написать на C++ использую сервер автоматизации, и как-то не хочется создавать форму…геморно всё. Пишу в Builder С++, пробовал использовать TOleConainer – но он пишет тож двоичные данные…Даж не знаю как выйти из этой ситуации. А задача именно такая: чтобы объекты записывались в таблицу также как и при "ручном" их добавлении…

  7. 2
    Леонид Максимов ответил:

    одного vba (без извращений) не достаточно. а чем не устраивает присоединенная рамка объекта?

  8. 1
    Юрий Пискунов ответил:

    Ну помогите же мне… :) У меня получилось записывать объекты как "двоичные данные", а вот как ИМЕННОзаписать туда ка объект OLE внедрённый….нифига не знаю! И инет мне не помог…

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.