Добрый вечер.
Очередная сложность…
Есть книга №1 (один лист), содержание которой полностью заполняется из других книг. Для того, что бы книга №1 корректно заполнилась (т.е. обновила связи с другими книгами), необходимо открыть все файлы-источники. Их много и это занимает кучу времени…
Полазила на многих формах и поняла, что эту проблему можно решить только макросом.
Я попыталась по шаблону написать для своего отчета макрос, но все равно выдает в некоторых ячейках ошибку (#знач).
Книга №1 заполняется следующим образом:
1. ссылки на конкретные ячейки — они обновляются
2. сводная таблица — она обновляется
3. формулы — выдает ошибку (ВПР работает, а вот суммесли и счетесли не работают)
(СУММЕСЛИ(‘\адрес книги[ДЗ.xlsx]Сводныйотчет’!$A2:$A65001;ВПР($B$3;Справочник!A:K;11;0);’\адрес книги[ДЗ.xlsx]Сводный отчет’!$I2:$I65001)
Ниже попытка написать макрос:
Sub M_1()
ActiveWorkbook.UpdateLink Name:= _
«\адрес книгипретензии — 2014.xls», Type:=xlExcelLinks
ActiveWorkbook.UpdateLink Name:= _
«\адрес книгиДЗ.xlsx», Type:=xlExcelLinks
ActiveWorkbook.UpdateLink Name:= _
«\адрес книгиОтсрочки.xls», Type:=xlExcelLinks
End Sub
Помогите, пожалуйста, разобраться… Где я допустила ошибку в коде? Самой не справиться…
Как сослаться или связать значение в закрытом / закрытом файле книги Excel?
Обычно, когда вы ссылаетесь на значение ячейки из другой книги, вам нужно сначала открыть книгу. Как насчет прямой ссылки на значение ячейки из закрытой книги? В этой статье будут показаны методы ссылки на значение ячейки из определенного листа неоткрытого файла книги.
Контрольное значение из закрытого / закрытого файла Excel с формулой
Вставьте все данные определенного рабочего листа из неоткрытого/закрытого файла Excel с помощью Kutools for Excel
Контрольное значение из закрытого / закрытого файла Excel с формулой
Предположим, что ваша закрытая книга с именем test находится по пути E: Excel file на вашем компьютере, и вы хотите ссылаться на значение ячейки A2 из Sheet2 этой закрытой книги. Пожалуйста, сделайте следующее.
1. Выберите пустую ячейку, чтобы разместить значение ячейки, на которую указывает ссылка, введите формулу в панель формул и нажмите кнопку Enter ключ. Смотрите скриншот:
=INDEX(‘E:Excel file[test.xlsx]Sheet2’!A:A,2,1)
Заметки:
1). В формуле E: файл Excel — это полный путь к неоткрытой книге, тест.xlsx — это имя книги, Sheet2 — это имя листа, которое содержит значение ячейки, из которой вам нужно ссылаться, а A: A, 2,1 означает, что ячейка A2 будет указана в закрытой книге. Вы можете изменить их в зависимости от ваших потребностей.
2). Если вы хотите вручную выбрать лист для ссылки, примените формулу ниже. После применения формулы a Выбрать лист появится диалоговое окно, выберите рабочий лист и нажмите кнопку ОК. Тогда сразу же будет ссылка на определенное значение ячейки этого рабочего листа.
=INDEX(‘E:Excel file[test.xlsx]sheetname’!A:A,2,1)
Вставьте все данные определенного рабочего листа из неоткрытого/закрытого файла Excel с помощью Kutools for Excel
Если вы хотите вставить все содержимое листа из закрытого файла Excel, здесь я рекомендую вам Вставить файл в курсор полезности Kutools for Excel. Чтобы это сделать, выполните следующие действия.
1. Выберите пустую ячейку, с которой должен начинаться указанный рабочий лист, затем щелкните Кутулс Плюс > Импорт Экспорт > Вставить файл в курсор.
2. в Вставить файл в курсор диалогового окна, нажмите Приложения кнопку.
3. в Выберите файл для вставки в позицию курсора ячейки диалоговом окне найдите и выберите закрытую книгу, на которую хотите сослаться, а затем нажмите Откройте кнопка. Смотрите скриншот:
4. Теперь он возвращается к вставке. Файл в курсоре диалоговом окне вы можете выбрать любой из Только значение (без формул) и Не передавать форматирование нужные вам параметры, а затем щелкните OK кнопка. В следующем всплывающем окне Выберите рабочий лист диалоговом окне, укажите рабочий лист и щелкните значок OK кнопка. Смотрите скриншот:
Теперь все содержимое выбранного рабочего листа указанной неоткрытой книги ссылается на текущий рабочий лист.
Внимание: Помимо ссылки на значения из неоткрытой книги, с помощью этой утилиты вы также можете ссылаться на значения из неоткрытого файла Txt или CSV.
Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.
Статьи по теме:
- Как ссылаться на формат и значение из другой ячейки в Excel?
- Как ссылаться на рабочий лист по номеру индекса вместо имени в Excel?
- Как удалить все ссылки на формулы, но сохранить значения в ячейках в Excel?
- Как сохранить постоянную ссылку на ячейку формулы в Excel?
- Как указать имя вкладки в ячейке в Excel?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Обновление внешних связей в закрытой книге |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Аналог функции ДВССЫЛ, работающий с закрытыми книгами
Автор IKor, 04.12.2008, 13:10
« назад — далее »
Господа,
Передо мной стоит задача получения информации из некоторого количества однотипных файлов (в настоящее время их около 20). Для этого в основном файле я определяю имена, ссылающиеся на диапазоны ячеек во внешних файлах, и затем обращаюсь к ним по указанному имени. К примеру =ИНДЕКС(Внешняя_Ссылка;1;1). Т.к. файлов много, то мне бы хотелось обращаться к ним, используя функцию ДВССЫЛ: =ИНДЕКС(ДВССЫЛ(А1);1;1), при этом А1=»Внешняя_Ссылка». К сожалению, функция ДВССЫЛ не работает с диапазонами, определенными в закрытых внешних файлах (так же как и функция СМЕЩ , и в отличии от функции ИНДЕКС ) — пока внешний файл открыт все работает нормально…
Поэтому сейчас мне приходится прописывать отдельно имена каждого из 20 внешних диапазонов.
Нельзя ли обойти это ограничение с помощью новой функции, написанной в VBA?
По понятным причинам мне не подходит решение при помощи VBA открывать все 20 файлов (даже в невидимом режиме) каждый раз, когда требуется пересчитать формулы, ссылающиеся на них.
Т.к. в VBA я не силен, то нельзя ли подробнее расписать как интегрировать новую функцию файл Excel. Должна ли она быть прописана только в основном файле или во всех внешних файлах тоже?
Цитата: IKor от 04.12.2008, 13:10
К сожалению, функция ДВССЫЛ не работает с диапазонами, определенными в закрытых внешних файлах.
Посмотрите в архиве тему: «Почему некоторые формулы не обновляются с закрытых книг?»
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли
посмотрел…
Цитата: SIA Sterkhov
Возможные решения:
1) C помощью макросов обработки событий в вба. Измение происходит с помощью редактирования связи изменение источника связи ActiveWorkbook.ChangeLink Name:=»C:\book1.xls», NewName:=»C:\mybook.xls», _ Type:=xlExcelLinks Но нужно знать что на что заменять Прямое редактирование свзи в тексте формулы Cells.Replace What:=»[book2]», Replacement:=»[book1]», LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=True, _ ReplaceFormat:=True
(Кстати с помощью данного способа можно не только менять источник связи но и адрес ячейки на которую сылается формула в закрытой книге.
2) Написание пользовательских функций использующих
а)SQL — запросы
б)механизм ADO
в)механизм скрытой книги, когда данные вычисляются с помощью прямых формул в скрытой книге, а результаты этих вычисление передаются в «динамическую формулу»
Перечитывал я на днях Канта и понял: Корней Чуковский мой писатель! (с)
Что мне пришло в голову после прочтения:
— можно создать новую пользовательскую функцию, в которую в качестве аргумента передавать строку текста.
— по результатам анализа оценить является ли текст ссылкой и ссылается ли он на открытую или закрытую книгу.
— в том случае, если книга закрыта, то воспользоваться всеми теми советами, что предложены выше и получить «правильную ссылку»;
— а ссылку на открытую книгу или «правильную ссылку» использовать в стандартной формуле INDIRECT (ДВССЫЛКА), вызываемой с помощью Formula Property
— результат возвращать в качестве результата самой функции.
В любом случае, я этого сам не осилю так, прошу помощи зала.
Цитата: IKor от 04.12.2008, 16:26
Что мне пришло в голову после прочтения:…
А я рассчитывал, что Вам придёт в голову воспользоваться функцией INDIRECT.EXT
Ссылка на офсайте клинит, но могу поделиться, если не найдёте.
Я вот так подумал:
- 1) копошащиеся источники связи – оригинально, но ни к чему, потому что если мы уж используем события листа, то можем открыть закрытую книгу и почитать её;
- 2) пользовательские функции с SQL/ADO – в самый раз, можно клепать.
- 2в) динамической формулой брать параллельный результат вычисления другой формулы может вести себя нестабильно, если вообще удастся развернуть последовательность вычислений вспять.
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли
Цитата: Шпец Докапыч от 04.12.2008, 18:40
А я рассчитывал, что Вам придёт в голову воспользоваться функцией INDIRECT.EXT
Так это же надо грамотным быть. Я о Morefunc for Excel и не знал ни чего до сего дня.
Действительно оф. сайт ничего не дает (причем на английской странице объевлена версия 5.05 от 1-12-08, а на французской — 5.06 от того же числа)
В любом случае я скачал комплект 5.06 отсюда и установил его.
Возможно, мне не понятны все настройки INDIRECT.EXT, но я не нашел отличий в работе обычной ДВССЫЛ и INDIRECT.EXT — несмотря на официально заявленную поддержку работы с закрытыми книгами
Мало того, что обе функции разучились поддерживать диапазон из внешней книги, которому присвоено имя в данной книге — по-моему у меня раньше получалось…
Но и различия в их работе не наблюдается
См. приложенные файлы.
И еще одна проблема: мой общий файл должен открываться не только с моего компа, где уже установлен пакет MoreFunc, но и с чужих. Конечно пакет бесплатен, но мой it-шник будет просто счастлив, устанавливая его на три десятка компьютеров…
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
Аналог функции ДВССЫЛ, работающий с закрытыми книгами
Приветствую!
Ребят, нужна помощь в теоретическом вопросе. Я не силен в VBA и программировании в целом, но есть идея для упрощения жизни себе и коллегам, помогите оценить реальность её воплощения. Заранее прошу прощения за всякого рода неточности и глупости, строго не судите =)
Итак, нужно создать подобие клиент-серверного комплекса, состоящего из книги Excel, лежащей в общем доступе на сервере, и небольшого приложения, которое позволяет с любого компьютера в локальной сети управлять содержимым данной книги (исключительно добавлять новые строки на соответствующем листе).
Книга Excel должна исполнять роль базы данных, хранить в себе записи, создаваемые приложением клиентской части. Книга будет названа определенным месяцем и годом, листы книги должны быть поименованы датами соответствующего месяца. На каждый месяц будет создана отдельная книга.
Клиентскую часть желательно выполнить в виде приложения, без открытия книги Excel. Или при открытии книги прятать сам Excel, оставляя только UserForm, при этом оставляя возможность работать в других книгах, открытых на компьютере. Это приложение будет содержать несколько кнопок, при нажатии на которые на определенном листе книги на сервере будет в конец добавляться определенная строчка. Главное – сделать возможной одновременную работу нескольких приложений на разных машинах.
В целом как-то так. Интересны конкретно следующие моменты:
- Возможно ли вообще управлять с помощью VBA закрытой книгой, которая находится на локальном сервере, но в общем доступе с правом редактирования?
- Возможно ли одновременная работа нескольких «клиентских» приложений? Вероятность того, что два приложения в один и тот же момент времени запросят добавление строки в книгу можно исключить, если это вообще имеет значение.
- Возможно ли средствами встроенного в Excel редактора VBA сделать «клиентское» приложение в UserForm, которое можно будет запускать напрямую? И можно ли сделать так, чтобы при этом сохранялась возможность работать в других книгах, открытых на компе?
Важно, что все это сделать нужно именно с использованием книги Excel.
Надеюсь я более-менее понятно выразил свою идею… Нужно мнение человека (а лучше нескольких), что из этого всего реально, а что нет. Буду благодарен за любое обоснованное мнение! И спасибо, что хотя бы дочитали =)