Консультация № 177810
11.04.2010, 13:17
35.77 руб.
0 5 1
Уважаемые эксперты помогите разобраться, пишу код:
Количество = ActiveDocument.InlineShapes.Count 'здесь получаю Количество = 36
For w = 1 To Количество
Имя_w = ActiveDocument.InlineShapes.Item(w).OLEFormat.Object.Name 'хочу узнать имя, до 5 имени всё хорошо, а на 5 имени получаю ошибку 91, почему ???, что не так, как исправить???
Next
Спасибо Эндрю

Обсуждение

Неизвестный
11.04.2010, 14:56
общий
это ответ
Здравствуйте, Ципихович Эндрю.
Не все виды Shapes, InlineShapes и Fields имеют установленным свойство OLEFormat.
Судя по всему, у очередного вашего объекта свойство OLEFormat = Nothing - следовательно для него получение значения .Object.Name некорректно.
Используйте свойство Type объектов Shape и InlineShape для определения категории к которой они относятся.
Свойство Type объекта Field возвращает тип поля.

Для вашего случая подход может быть таким:

Приложение:
...
If (ActiveDocument.InlineShapes.Item(w).Type = wdInlineShapeOLEControlObject) Then
Name_w = ActiveDocument.InlineShapes.Item(w).OLEFormat.Object.Name
End If
...
5
Неизвестный
11.04.2010, 15:41
общий
Andrew Kovalchuk:
Спасибо за ответ
Хочу пояснить почему у меня возник вопрос возник и ещё один назрел, неожиданно
У меня имеется макрос с именем

Sub AutoNew()
Ранее в нём было написано:

If ActiveDocument.InlineShapes.Count >= 14 Then
If ActiveDocument.InlineShapes.Item(14).OLEFormat.Object.Name = "ComboBox1" Then
ActiveDocument.ComboBox1.AddItem "1"
Энд Иф
Энд Иф

Появился у меня файл при его открытии получал ошибку
Задал вопрос, Вы подсказали я написал

If ActiveDocument.InlineShapes.Count >= 14 Then
If ActiveDocument.InlineShapes.Item(14).Type = wdInlineShapeOLEControlObject Then
If ActiveDocument.InlineShapes.Item(14).OLEFormat.Object.Name = "ComboBox1" Then
ActiveDocument.ComboBox1.AddItem "1"
Энд Иф
Энд Иф
Энд Иф
Теперь открываю этот же файл ошибку не получаю
Но ничего не делая пытаюсь его закрыть спрашивает сохранить ли изменения, почему??
В других файлах не спрашивает сохранить ли изменения и АутоКлозе у меня нет!!!!!!!


Неизвестный
11.04.2010, 15:56
общий
Ципихович Эндрю:
В файл были внесены изменения - ActiveDocument.ComboBox1.AddItem "1". И хотя они не сохранятся (сказываются особенности поведения комбобокса) после закрытия файла, факт изменения Вордом был зафиксирован - поэтому и предложение о сохранении. Имхо.
Неизвестный
11.04.2010, 17:34
общий
Andrew Kovalchuk:
Дело в том, что в документе о котором я говорю
могла выполниться только 1 строка кода
If ActiveDocument.InlineShapes.Count >= 14 Then
Дальше на выход, так как эти строки он бы не смог сделать
If ActiveDocument.InlineShapes.Item(14).Type = wdInlineShapeOLEControlObject Then
If ActiveDocument.InlineShapes.Item(14).OLEFormat.Object.Name = "ComboBox1" Then
ActiveDocument.ComboBox1.AddItem "1"
потому что там нет кнопки № 14 с именем ComboBox1
Что же он считает и предлагает мне внести изменения

Кроме того в другой файл где кнопка № 14 с именем ComboBox1 есть, открыв его и тут же закрыв он ничего не предлагает



Неизвестный
11.04.2010, 18:47
общий
Ципихович Эндрю:
Возможно дело в обновлении связей с внедренными OLE-объектами.
Форма ответа