Добрый день!
Есть в Экселе ссылки, поставленные руками - они работают даже при закрытом файле-источнике. Причем они меняют вид (если точку вставки переместить в ячейку с сылкой - видно, что при открытом файле-источнике ссылка имеет вид "название_файла!имя", а при закрытом - "полный_путь_название_файла!имя", там еще апостроф попадается).
При попытке создать ссылку таким же образом но через ДВССЫЛ(СЦЕПИТЬ(А1;А2)) - ссылка на имя работает только при открытом файле. Причем добавление полного пути в адрес сылки не помогает.
Блин, стоят в соседних строках две ссылки - одна работает (при закрытом файле-источнике), другая - нет, обе по тексту совпадают.
Что это за херня и как с ней бороться?
EXEL: сылка на имя в неоткрытом файле?
Модератор: Naeel Maqsudov
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Уточните: Из этих двух ссылок одна является просто ссылкой, а другая вычисляется по ДВССЫЛ. Я правильно понимаю ситуацию?Блин, стоят в соседних строках две ссылки - одна работает (при закрытом файле-источнике), другая - нет, обе по тексту совпадают.
Уточню.
Необходимо формульными или простыми VBA средствами получить информацию из ячеек в ЗАКРЫТОМ файле Ексел.
На момент проставления ссылки или первого обращения к ячейкам в файле-источнике он может быть открыт, главное - что бы при последующей работе с файлом-получателем не было необходимости держать файл-источник открытым.
Второе условие - координаты или "имя" ячейки, на которую указывает данная ссылка - переменные, т.е.
в одну ячейку вводишь "имя" (или координаты), во второй ячейке - возвращается значение "имя" в закрытом файле.
А крик души - именно так. Проставляешь ссылку при открытом файле-источнике руками - набиваешь там "=название_файла!имя" - все работает. Система сама отслеживает состояние файла-источника, и если источник закрыт - каким-то образом меняет ссылку.
Генерируешь ссылку через ДВССЫЛ - при открытом источнике работает, при закрытом файле - не работает.
Кстати, спасибо за быстрое реагирование
Необходимо формульными или простыми VBA средствами получить информацию из ячеек в ЗАКРЫТОМ файле Ексел.
На момент проставления ссылки или первого обращения к ячейкам в файле-источнике он может быть открыт, главное - что бы при последующей работе с файлом-получателем не было необходимости держать файл-источник открытым.
Второе условие - координаты или "имя" ячейки, на которую указывает данная ссылка - переменные, т.е.
в одну ячейку вводишь "имя" (или координаты), во второй ячейке - возвращается значение "имя" в закрытом файле.
А крик души - именно так. Проставляешь ссылку при открытом файле-источнике руками - набиваешь там "=название_файла!имя" - все работает. Система сама отслеживает состояние файла-источника, и если источник закрыт - каким-то образом меняет ссылку.
Генерируешь ссылку через ДВССЫЛ - при открытом источнике работает, при закрытом файле - не работает.
Кстати, спасибо за быстрое реагирование
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Необходимо формульными или простыми VBA средствами получить информацию из ячеек в ЗАКРЫТОМ файле Ексел.
Ну во-первых - это иллюзия! Чтобы достать значение Excel открывает файл в любом случае. Использует для этого механизмы DDE или OLE.
Теперь по существу: если ссылка генерится по ДВССЫЛ, то Excel лишается возможности использовать механизмы, которые используются для обновления ссылок, когда ссылка указана явно. Не будет работать!
Что касается VBA, то можно написать свою функцию.
В ней надо: создать OLE-объект типа WorkBook, причем создать его из файла. Обратиться к диапазону, достать значение, и закрыть OLE-объект.
Никогда такого не делал... Надо будет проверить...
см в справке функцию VBA GetObject и пример к ней.
Спасибо, Куратор!
Жаль, что ответ отрицательный.
Буду искать другой выход - не зная ВБА не рискну соваться в написание программ - куча времени уйдет на рабирательство.
Успехов!
Кстати, отличный форум
Жаль, что ответ отрицательный.
Буду искать другой выход - не зная ВБА не рискну соваться в написание программ - куча времени уйдет на рабирательство.
Успехов!
Кстати, отличный форум
