У меня есть книга Excel под названием «C: \ myfile.xlsm».Не удалось получить доступ к ячейкам в другой книге
В нем есть рабочий лист под названием «продажи».
Из другой открытой книги Я пытаюсь получить доступ к значению ячейки из этой книги C: \ myfile.xlsm.
(BTW: C: \ myfile.xlsm не открыт.)
Выполнение следующих терпит неудачу:
temp = Workbooks("C:\myfile.xlsm").Worksheets("sales").Range("C2").Value
Я получаю эту ошибку, и я не знаю, почему:
время работы ошибка 9
Подстрочный из диапазона
Вы действительно не задаете вопрос, знаете ли. Все ответы указывают, что вы хотите знать, ПОЧЕМУ вы получаете ошибку и как использовать код, который вы показываете. Немного несправедливо ответить на эти ответы, что ваша проблема связана со скоростью и что вы пытаетесь найти способ не открывать книгу! Тем не менее, поиск информации о подключении к книге с использованием OLE DB (соединение с базой данных). Если содержимое рабочей книги, которое вы хотите запросить, находится в формате «плоской таблицы», или ключевая информация находится в именованных диапазонах, что должно быть более эффективным, что фактически открывает книгу. –
OLE DB работал как шарм. Очень быстро. Я запустил его в новой книге, которая обращается к существующей книге с более чем 80 000 строк. Первоначальная настройка заняла время, потому что в этой таблице было дюжину рабочих листов. Один содержит эти 80 000 строк. У других есть еще много тысяч. Но как только я выбрал именно эту книгу и сохранил новую книгу, я могу перезапустить ее и вытащить обновление всего за пять секунд. Отлично. –
Рад, что это помогло :-) Проблема теперь в том, как бороться с этим обсуждением ... Моя склонность была бы такой: 1) Используйте ссылку [edit], чтобы дополнить свой исходный вопрос наблюдением за большим объемом данных и скоростью, являющейся фактор; 2) Запишите подход OLE DB, который вы разработали для себя, и опубликуйте его как ответ. В какой-то момент вы сможете щелкнуть галочку рядом с ней, чтобы отметить ее как «ответ». (Вам разрешено, даже поощряется, сделать это на Stack Overflow!) –