Глюк в VBA?

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Иванов
Сообщения: 7
Зарегистрирован: 28 сен 2009, 09:29

У меня простенькая процедура с проверкой наличия файла в папке:

Public Sub КонтрольВходной()
Dim имя As String
Dim s As String

имя = "C:\Windows\Sha.doc"
s = Dir(имя)
If s <> "" Then ..... и т.д.

Так вот, не работает команда Dir. Возвращает пустое значение. Что только не делал - ничего не помогает. (Я только что переустановил Винду, офис..). Естественно, раньше все работало. Да мало того, на другом компе все работает.

Где что сломалось? - не пойму. Может у кого такое было?
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте Иванов.
формулировка "Возвращает пустое значение" не совсем корректна, конструкция:
s = Dir(имя)
может присваивать переменной s или имя файла "Sha.doc" если путь его расположения указан верно (существует), или строку нулевой длины (не существует).
Причина возникновения таких "проблем" в большинстве случаев -, потеря связи с используемой библиотекой. Проверьте, меню Tools / References... и отключите ссылку с сообщением MISSING.
Думаю у Вас всё получится.
Евгений.
Иванов
Сообщения: 7
Зарегистрирован: 28 сен 2009, 09:29

Спасибо,Евгений за ответ. Я уж думал, останусь наедине с моей бякой.

Tools/references конечно проверял. Все нужные библиотеки подключены.
Только где и когда мне смотреть "missing"? В Reference после исполнения этой функции? Я такого там никогда не видел.
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Откройте в редакторе VBA меню Tools / References...
Если в одной из выбранных строк есть слово MISSING (потеря) отключите эту строку, и счастье придет к Вам.
Случай с некорректной строкой отображающей путь "C:\Windows\Sha.doc" рассматривать не стоит, хотя не исключено применение кириллических символов подобного начертания (случаи были)
Евгений.
Иванов
Сообщения: 7
Зарегистрирован: 28 сен 2009, 09:29

Случай с кириллицей не надо рассматривать, поскольку программа перестала работать после переустановки системы.

Я только не пойму, что это за missing? Поясните. Неужели VBA проводит диагностику подключенных библиотек? Missing - пропущена библиотека и её надо отключить? Как это? Чего-то я не врубаюсь.
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

для тех кто на бронепоезде:
MISSING - не пропущена библиотека, а потеряна связь с библиотекой.
К проекту VBA подключаются дополнительные библиотеки зарегистрированные в системе. "после переустановки системы" не все библиотеки на которые есть ссылка в проекте были установлены сообщение MISSING (потеря связи) говорит именно об этом.
Для работоспособности проекта, все связи и неиспользуемые в том числе, должны быть корректны. Вы не обратите внимание на автобусный билет в кармане если не будет автобуса сядете на трамвай и уедете, в проекте всё гораздо жестче если есть билет на автобус - будем ждать автобус, а если рейс отменен - катастрофа.
Надеюсь объяснение понятно.
Евгений.
Иванов
Сообщения: 7
Зарегистрирован: 28 сен 2009, 09:29

Все решилось просто. Прошу прощения, что ввел Вас в заблуждение. Этого файла действительно не было в папке. Глюка в VBA нет.
Ответить