Обновление OLE Reference в приложении VB6 - PullRequest
2 голосов
/ 08 апреля 2011

У меня есть старое приложение vb6, за которое я отвечаю за сохранение, открытие и печать документов Word на компьютер пользователя. На днях, когда мы перешли из офиса 2003 в офис 2010, я начал получать жалобы на то, что программа больше не будет открывать сохраненные отчеты и распечатывать их. Удаление Officer 2010 и установка 2003 решает проблему.

Подпроцедура, которая обрабатывает все это - ванильный код MSDN, и я не могу найти ничего, что связывало бы его с определенной версией Word. Моя следующая мысль, возможно, это ссылка OLE dll. Где / как я могу обновить ссылку VB6 на dll для работы с новой версией офиса?

Любые другие предложения будут с благодарностью.

Ответы [ 3 ]

1 голос
/ 10 апреля 2011

Я не уверен, но похоже, что вы пытаетесь использовать раннее связывание.Если это так, то это, вероятно, ваша проблема.

Существует множество статей по MS KB, предупреждающих об этом в течение более чем десятилетия.Примеры:

http://support.microsoft.com/kb/247579

http://support.microsoft.com/kb/245115

Другими словами: удалите все ссылки на любую версию Word, объявите все объекты As Object и используйтеCreateObject() или GetObject(), где это уместно, вместо Set Obj = New LibName.ClassName.

Эти статьи базы знаний уже устарели, и старые правила позволяют вам скомпилироваться со ссылкой на Word 95 и по-прежнему автоматизировать Word 2002кажется, больше не применяется.Помимо того, что на вашем компьютере разработчика была установлена ​​самая старая поддерживаемая версия Office, я подозреваю, что в Office 2003 была нарушена восходящая совместимость.

Лучше всего ставить позднюю привязку.Для большинства программ снижение производительности минимально, поэтому самая большая головная боль - потеря IntelliSense.

0 голосов
/ 09 апреля 2011

Чтобы ответить на ваш вопрос «Где и как я могу обновить ссылку на VB6 на dll для работы с новой версией офиса?»: Вам, конечно, нужен компьютер с установленными Office 2010 и VB 6. Если вы откроете проект в VB IDE, вы можете изменить ссылку на соответствующую библиотеку Word. Ссылки также отмечены в файле VBP, например, как это

Type=Exe
Reference=*\G{00020905-0000-0000-C000-000000000046}#8.0#409#C:\Program Files\Microsoft Office\OFFICE11\MSWORD.OLB#Microsoft Word 8.0 Object Library
Reference=*\G{00025E01-0000-0000-C000-000000000046}#4.0#0#C:\Program Files\Common Files\Microsoft Shared\DAO\DAO350.DLL#Microsoft DAO 3.51 Object Library
Reference=*\G{420B2830-E718-11CF-893D-00A0C9054228}#1.0#0#C:\WINDOWS\system32\SCRRUN.DLL#Microsoft Scripting Runtime

Затем перекомпилируйте. Ну, а если вы там, вы можете просто начать отладку и посмотреть, что происходит подробно и почему отчеты не срабатывают. Нет способа изменить ссылку без перекомпиляции, если это был ваш вопрос.

Если это простой ванильный код, связанный с открытием, сохранением и печатью, трудно представить, что что-то идет не так.

С другой стороны - существуют ли какие-либо "базовые файлы" в формате Word, которые используются? Может быть, они имеют старый формат (из Office 95, только что видел это в последнее время). Попробуйте открыть эти файлы вручную и посмотрите, что произойдет.

0 голосов
/ 08 апреля 2011

Если вы просто слепо обновите ссылку, вы, скорее всего, прекратите поддержку Office 2003. Если это не проблема, перейдите к ней.

Если это так, вам нужно сузить область поиска.В частности, приложение не работает.Есть некоторые незначительные различия между оборотами модели автоматизации между версиями.Не много, но они есть.

Скорее всего, код делает что-то, что делает его специфичным для 2003 года. MS довольно неплохо справляется с поддержкой обратного сжатия, но это не так.%

...