Консультация № 187101
16.01.2013, 08:18
178.17 руб.
0 8 1
Здравствуйте! У меня возникли сложности с таким вопросом -
При выполнении макроса возникает ошибка: "Ошибка времени выполнения Basic. Переменная типа Object не установлена".
Код:
Sub RandomFont()
Application.ScreenUpdating = False

Set objDoc = ActiveDocument
Set objRandom = CreateObject("System.Random")

Set objRange = objDoc.Range()
Set colCharacters = objRange.Characters

For Each strCharacter In colCharacters
'strCharacter.Font.Reset
strCharacter.Font.Scaling = 100 + objRandom.Next_2(-50, 50) / 8 'разброс ширины шрифта
strCharacter.Font.Position = objRandom.Next_2(-200, 300) / 700 'разброс позиции относительно базовой линии
strCharacter.Font.Size = strCharacter.Font.Size + objRandom.Next_2(-300, 400) / 400 'разброс размеров шрифта
strCharacter.Font.Kerning = 12 + objRandom.Next_2(-10, 40) / 5 'разброс кернинга
Select Case objRandom.Next_2(1, 5) 'рандомный шрифт
Case 1
strCharacter.Font.Name = "Arial Black"
Case 2
strCharacter.Font.Name = "Times New Roman"
Case 3
strCharacter.Font.Name = "Calibri"
Case 4
strCharacter.Font.Name = "Arial"
End Select
Next

Application.ScreenUpdating = True
End Sub

Подскажите пожалуйста в чём причина этой ошибки, и какие ошибки есть в коде макроса?

Обсуждение

давно
Профессионал
848
1596
16.01.2013, 09:23
общий
это ответ
Здравствуйте, Посетитель - 395804!
Чтобы данный код отработал нужно подключить библиотеку System.
Сделать это можно через меню:
Сервис->Макрос->Редактор Visual Basic.
В открывшемся редакторе
Tools->References
Найти в списке System, поставить галочку, нажать ОК, после этого код должен запускаться без ошибок. Проверил в Word 2003.
5
Неизвестный
16.01.2013, 09:26
общий
Странно. У меня в Word 2010 все проходит успешно.
Макрос поместил в модуль Project документа.ThisDocument.
Я предполагаю, что ошибка - в каких-то других макросах, имеющихся в программе.
Вы пробовали отладку? Где происходит остановка?
Неизвестный
16.01.2013, 14:56
общий
Вы пробовали отладку? Где происходит остановка?

Во второй строке.
Код:
Application.ScreenUpdating = False

В Microsoft Word 2007 и Libre Office Writer, возникает одна и та же ошибка.
Неизвестный
16.01.2013, 15:25
общий
Попробуйте прикрепленный файл.
У вас работает?
Прикрепленные файлы:
5423bf9e08dafe52ed96f98740cee309.zip
Неизвестный
16.01.2013, 15:27
общий
16.01.2013, 15:32
Проверьте, установлены ли у вас эти библиотеки (см. рисунок во вложении)?

Вкладка Разработчик - Visual Basic
В открывшемся редакторе Visual Basic выберите:
Tools - References
Прикрепленные файлы:
74f469a97f23be65dfc9dd34608236a0.jpg
давно
Профессионал
848
1596
16.01.2013, 15:40
общий
Получилось ли подключить библиотеку System?
Смог ли макрос нормально отработать?
Неизвестный
16.01.2013, 19:31
общий
Цитата: 302725
Попробуйте прикрепленный файл.
У вас работает?

- Ошибка времени выполнения Basic. '323'. Не возможно загрузить новый модуль: неверный формат.
Проверьте, установлены ли у вас эти библиотеки.

Установлены.

Цитата: PsySex
Получилось ли подключить библиотеку System?
Смог ли макрос нормально отработать?

На компьютере с библиотекой System, макрос работает (Установлен Microsoft Office 2007). Как перенести библиотеку System на другой компьютер?
давно
Профессионал
848
1596
16.01.2013, 23:02
общий
16.01.2013, 23:03
На компьютере с библиотекой System, макрос работает (Установлен Microsoft Office 2007). Как перенести библиотеку System на другой компьютер?

Переносить ничего не нужно, это библиотека из .NET Framework. А это обычно уже входит в состав операционной системы Windows.
Если поставить галку в Вашем документе, сохранить, то открывая его на другом компьютере макрос тоже должен выполняться, т.к. состояние подключенных библиотек было сохранено.
Форма ответа