EXEL: сылка на имя в неоткрытом файле?

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

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

Ответить
Circus
Сообщения: 8
Зарегистрирован: 06 сен 2004, 19:52
Контактная информация:

Добрый день!

Есть в Экселе ссылки, поставленные руками - они работают даже при закрытом файле-источнике. Причем они меняют вид (если точку вставки переместить в ячейку с сылкой - видно, что при открытом файле-источнике ссылка имеет вид "название_файла!имя", а при закрытом - "полный_путь_название_файла!имя", там еще апостроф попадается).
При попытке создать ссылку таким же образом но через ДВССЫЛ(СЦЕПИТЬ(А1;А2)) - ссылка на имя работает только при открытом файле. Причем добавление полного пути в адрес сылки не помогает.

Блин, стоят в соседних строках две ссылки - одна работает (при закрытом файле-источнике), другая - нет, обе по тексту совпадают.

Что это за херня и как с ней бороться?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Блин, стоят в соседних строках две ссылки - одна работает (при закрытом файле-источнике), другая - нет, обе по тексту совпадают.
Уточните: Из этих двух ссылок одна является просто ссылкой, а другая вычисляется по ДВССЫЛ. Я правильно понимаю ситуацию?
Circus
Сообщения: 8
Зарегистрирован: 06 сен 2004, 19:52
Контактная информация:

Уточню.

Необходимо формульными или простыми VBA средствами получить информацию из ячеек в ЗАКРЫТОМ файле Ексел.

На момент проставления ссылки или первого обращения к ячейкам в файле-источнике он может быть открыт, главное - что бы при последующей работе с файлом-получателем не было необходимости держать файл-источник открытым.

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

в одну ячейку вводишь "имя" (или координаты), во второй ячейке - возвращается значение "имя" в закрытом файле.

А крик души - именно так. Проставляешь ссылку при открытом файле-источнике руками - набиваешь там "=название_файла!имя" - все работает. Система сама отслеживает состояние файла-источника, и если источник закрыт - каким-то образом меняет ссылку.
Генерируешь ссылку через ДВССЫЛ - при открытом источнике работает, при закрытом файле - не работает.

Кстати, спасибо за быстрое реагирование
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Необходимо формульными или простыми VBA средствами получить информацию из ячеек в ЗАКРЫТОМ файле Ексел.


Ну во-первых - это иллюзия! Чтобы достать значение Excel открывает файл в любом случае. Использует для этого механизмы DDE или OLE.

Теперь по существу: если ссылка генерится по ДВССЫЛ, то Excel лишается возможности использовать механизмы, которые используются для обновления ссылок, когда ссылка указана явно. Не будет работать!

Что касается VBA, то можно написать свою функцию.
В ней надо: создать OLE-объект типа WorkBook, причем создать его из файла. Обратиться к диапазону, достать значение, и закрыть OLE-объект.

Никогда такого не делал... Надо будет проверить...

см в справке функцию VBA GetObject и пример к ней.
Circus
Сообщения: 8
Зарегистрирован: 06 сен 2004, 19:52
Контактная информация:

Спасибо, Куратор!

Жаль, что ответ отрицательный.
Буду искать другой выход - не зная ВБА не рискну соваться в написание программ - куча времени уйдет на рабирательство.

Успехов!

Кстати, отличный форум :)
Ответить