Макросы Visual Basic

программирование visual basic

Не подскажете, в чем дело?

Есть Excel 2007 таблица, где в А1, А2, А3 какие-то значения.

При помощи меню Tools | References добавляю в проект ссылку на библиотеку Microsoft Word 12.0 Object Library, хотя в книге просят добавит 11, но ее у меня нету, т. к. использую 2007 офис.
Ввожу следующий код:

Public Sub FromExcelToWord()
MsgBox Range("A1").Text
MsgBox Range("A2").Text
MsgBox Range("A3").Text
Dim oWord As Word.Application
Dim oDoc As Word.Document
Set oWord = CreateObject("Word.Application")
oWord.Visible = True
Set oDoc = oWord.Documents.Add()
oDoc.Activate
oWord.Selection.TypeText "Вставляемый текст"
End Sub

Этот код должен выводить в окна сообщений значения ячеек A1, A2 и A3, а затем открыть Word и впечатать в начало нового документа строку "Вставляемый текст".

При запуске, выплывает ошибка:
User-defined type not defined;
И указывается строчка:
Dim oWord As Word.Application
Dim oDoc As Word.Document

Подскажите где не прав?

Примечание:
Jesterok
Не, все ок. Я подозреваю, что при переходе из под 2003 на 2007 офис изменились некоторые стандарты в языке, вернее, даже не стандарты, а библиотеки и т. д.
Вот никак не могу понять где лажаю ( С Dim все нормально.
Ответы:
Насколько я помню, все объявления переменных (через Dim) должны стоять вначале процедуры (могу ошибаться, с бэйсиком уже очень давно не работал).
Думаю да, поменялись пространства имен. По всей видимости Word.Application называется по другому, либо перемещено в другое пространство имен (например, может быть так: Office.Word.Application, это как пример, пытаться не надо :) Что надо сделать? Зайти на MSDN и ознакомится с данной библиотекой. Наверняка там найдется раздел типа "изменения с предыдущей версии" или вроде того. Офис 2007 не стоит, протестировать негде, поэтому более конкретно ответить не могу. Да, еще можно зайти в object explorer (или как он там в VBA зовется) и сделать поиск Word.Application, чтоб убедиться что такое пространство имен отсутствует, а присутствует что-то другое


16 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.