Excel связь с закрытой книгой

Добрый вечер.
Очередная сложность…
Есть книга №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-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Обновление внешних связей в закрытой книге

Stormy

Дата: Среда, 01.02.2017, 14:58 |
Сообщение № 1

Группа: Проверенные

Ранг: Обитатель

Сообщений: 357


Репутация:

12

±

Замечаний:
0% ±


Excel 2010

Здравствуйте, уважаемые форумчане.
Так как захожу раз в год, то позвольте поздравить вас всех с 2017 +)
Здоровья, счастья, мира ну и всего того, что пожелали Вам на праздничном застолье.

Суть проблемы.
Есть два файла Вход_знач и Исход_знач.
Оба файла содержат одинаковые таблицы. Нужно получить значения из Исход_знач в Вход_знач.
Ну типо из А1 в А1 и так по нескольким столбцам. Примерно будет 100 строк.
Поставил прямые ссылки

Код

=’C:UsersXanlarDesktopSifariş[price2.xls]Лист1′!E14

Все работает, если ручками ткнуть на Данные→Изменить связи→Обновить , но данный способ не устраивает КБ .
Приходится плясать с бубном.
Как-то давным давно встречал функции ( а может это сбой памяти), которые могут получать значения из закрытой книги.

Цитата Вопрос №1 ()

Есть ли такие и в самом деле?

Как вариант можно повесить обработку события при открытие книги.
[offtop]Правда пока не знаю как себя поведет эта книга после помещения ее в Autocad к качестве OLE объекта.[/offtop]

Цитата Вопрос №2 ()

Может ли кто с примером макроса помочь?

Цитата Вопрос №3 ()

Есть ли у кого иные соображения по решению задачи?


Место для рекламы.

 

Ответить

_Boroda_

Дата: Среда, 01.02.2017, 15:13 |
Сообщение № 2

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Karataev

Дата: Среда, 01.02.2017, 15:30 |
Сообщение № 3

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

Все работает, если ручками ткнуть на Данные→Изменить связи→Обновить , но данный способ не устраивает КБ .

Это какой-то сбой с файлами. Я их скачал, в файле с формулами указал файл источник. Сохранил файл с формулами и закрыл. Затем открываю и Excel не видит файл источник и просит изменить связь. Хотя такого не должно быть и в диалоговом окне написано «OK».
После чего я создал новых два файла, в одном сделал формулу на другой и при открытии файла с формулами уже нет предложения изменить связи.


Киви-кошелек: 9166309108

 

Ответить

_Boroda_

Дата: Среда, 01.02.2017, 15:38 |
Сообщение № 4

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Я их скачал, в файле с формулами указал файл источник.

А xls на xlsx не забыли поменять? — price2.xlsx
И, кстати, в В4 ссылка на В14, если поменять на В4, то все из закрытого тянется вроде

Код

=’C:UsersAGusevМояСтереть[price2.xlsx]Лист1′!B4


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Stormy

Дата: Среда, 01.02.2017, 15:39 |
Сообщение № 5

Группа: Проверенные

Ранг: Обитатель

Сообщений: 357


Репутация:

12

±

Замечаний:
0% ±


Excel 2010

_Boroda_,

Спасибо, сижу разбираю этот вариант.
Хотел формулами сделать, чтобы не зависеть от настроек Экзеля, но видать не судьба


Место для рекламы.

 

Ответить

Karataev

Дата: Среда, 01.02.2017, 15:58 |
Сообщение № 6

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

А xls на xlsx не забыли поменять?

Я не обратил внимание на расширение.

Stormy, у Вас формула ссылается на файл с расширением «xls», а Вы на форуме выложили файл с расширением «xlsx». Может быть в этом проблема.


Киви-кошелек: 9166309108

 

Ответить

_Boroda_

Дата: Среда, 01.02.2017, 16:23 |
Сообщение № 7

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

но данный способ не устраивает КБ

Так формулами или не устраивает? Или не устраивает, что нужно обновляться? Так Вы можете в настройках Excel
Файл — Параметры — Центр управления безопасностью — Параметры центра управления безопасностью — Внешнее содержимое — Параметры безопасности для связей в книге
поставить галку «Включить автоматическое обновление …»


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Karataev

Дата: Среда, 01.02.2017, 16:29 |
Сообщение № 8

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

_Boroda_, я так понял, что у автора при открытии файла каждый раз просит изменить связи. У меня так с его файлами. И автор думает, что это нормально для Excel’я, а я думаю, что сбой с файлами, вероятно из-за несовпадений расширений файлов (это Вы обратили внимание на расширения).


Киви-кошелек: 9166309108

 

Ответить

Stormy

Дата: Среда, 01.02.2017, 16:57 |
Сообщение № 9

Группа: Проверенные

Ранг: Обитатель

Сообщений: 357


Репутация:

12

±

Замечаний:
0% ±


Excel 2010

Karataev,
Пример формулы брал с работающего файла, поэтому такое несоответствие.

И, кстати, в В4 ссылка на В14, если поменять на В4, то все из закрытого тянется вроде

Чувствую, что собака тут зарыта. Завтра буду на ясную голову пробовать.

Спасибо всем за участие.

К сообщению приложен файл:

2999645.jpg
(23.0 Kb)


Место для рекламы.

 

Ответить

Stormy

Дата: Четверг, 02.02.2017, 11:32 |
Сообщение № 10

Группа: Проверенные

Ранг: Обитатель

Сообщений: 357


Репутация:

12

±

Замечаний:
0% ±


Excel 2010

Всем спасибо!

_Boroda_, я так понял, что у автора при открытии файла каждый раз просит изменить связи. У меня так с его файлами. И автор думает, что это нормально для Excel’я, а я думаю, что сбой с файлами, вероятно из-за несовпадений расширений файлов (это Вы обратили внимание на расширения).

Проблема была в этом и вправду думал, что без подтверждения не обойтись. Хотя проставил все галочки. Возможно файл/расширение или еще что-то давало сбой.

Репу поднять не получилось, но обещаю поднять бокал вина за ваше здоровье :)

Пойду пробовать на OLE интересно там какие подводные камушки вылезут ;)


Место для рекламы.

 

Ответить

Stormy

Дата: Четверг, 02.02.2017, 15:51 |
Сообщение № 11

Группа: Проверенные

Ранг: Обитатель

Сообщений: 357


Репутация:

12

±

Замечаний:
0% ±


Excel 2010

К сожалению, ничего не получилось при работе с OLE :'(
Возникли вопросы, может в них все дело.
1) Для двух файлов с разным расширением (xls/xlsx/xlsm) не будет работать автообновление связей?
2) Стоит ли копать в сторону запроса к внешнему подключению или таки разобраться с *формульной* проблемой?


Место для рекламы.

 

Ответить

_Boroda_

Дата: Четверг, 02.02.2017, 15:57 |
Сообщение № 12

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

1. Будет
2. Вам виднее. Я бы формулами сделал. Если их не очень много, конечно.
Кстати, если они не автообновляются, то можно макросом по ним пробежаться и «передернуть» каждую. Или все сразу. Или «Данные→Изменить связи→Обновить» записать макросом и повесить на открытие книги


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Stormy

Дата: Пятница, 03.02.2017, 08:54 |
Сообщение № 13

Группа: Проверенные

Ранг: Обитатель

Сообщений: 357


Репутация:

12

±

Замечаний:
0% ±


Excel 2010

2. Вам виднее. Я бы формулами сделал. Если их не очень много, конечно.

Там от силы 40-50 строк.

Странно, но не хочет обновлять без тыка. Хочу попробовать пересоздать файл, который используется в виде OLE объекта в Autocad. Может этот файл глючит и создает проблему.
О результатах отпишусь

Кстати, если они не автообновляются, то можно макросом по ним пробежаться и «передернуть» каждую. Или все сразу. Или «Данные→Изменить связи→Обновить» записать макросом и повесить на открытие книги

Вчера сделал, чет ошибка выскакивала. Попробую этот вариант на свежую голову.


Место для рекламы.

 

Ответить

skais675

Дата: Пятница, 03.02.2017, 14:11 |
Сообщение № 14

Группа: Заблокированные

Ранг: Форумчанин

Сообщений: 138


Репутация:

3

±

Замечаний:
100% ±


Excel 2010

Вот Вам макрос, который обновляет и тд тп
Все файлы должны находиться в одной папке!
[vba]

Код

Sub UpdateLinks()
    Dim FilesToOpen
    Dim x As Integer
    ‘pass = InputBox(«Ââåäèòå ïàðîëü»)

            Application.ScreenUpdating = False  ‘îòêëþ÷àåì îáíîâëåíèå ýêðàíà äëÿ ñêîðîñòè

         ‘âûçûâàåì äèàëîã âûáîðà ôàéëîâ äëÿ èìïîðòà
    ChDir ThisWorkbook.Path
    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:=»All files (*.*), *.*», _
      MultiSelect:=True, Title:=»Files to Merge») ‘.OpenPath = «C:»

    If TypeName(FilesToOpen) = «Boolean» Then
        MsgBox «Íå âûáðàíî íè îäíîãî ôàéëà!»
        Exit Sub
    End If

         ‘ïðîõîäèì ïî âñåì âûáðàííûì ôàéëàì
    x = 1
    While x <= UBound(FilesToOpen)
        Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))

                Dim aL(), i&, s
        aL = importWB.LinkSources(xlExcelLinks)
        If IsEmpty(aL) Then Exit Sub
        For i = 1 To UBound(aL)
            s = Split(aL(i), «»)
            Application.StatusBar = FilesToOpen(x) + » — » + s(UBound(s))
            importWB.ChangeLink aL(i), importWB.Path & «» & s(UBound(s)), 1
            importWB.UpdateLink Name:=importWB.Path & «» & s(UBound(s)), Type:=xlExcelLinks
        Next
        importWB.RefreshAll
        importWB.Close savechanges:=True
        x = x + 1
    Wend

    Application.ScreenUpdating = True
    MsgBox «Ïðîöåññ îáíîâëåíèÿ óñïåøíî çàâåðøåí!»

                        End Sub

[/vba]


Vlad
skype: skais675
email: skais675@mail.ru

Сообщение отредактировал skais675Пятница, 03.02.2017, 14:20

 

Ответить

Stormy

Дата: Суббота, 04.02.2017, 10:24 |
Сообщение № 15

Группа: Проверенные

Ранг: Обитатель

Сообщений: 357


Репутация:

12

±

Замечаний:
0% ±


Excel 2010

Все файлы должны находиться в одной папке!

Добрый день, Влад.
Благодарю за пример.
Только он мне в таком варианте совсем не подойдет. У меня один файл будет хранится на компе пользователя, а второй на сервере.
Хотя, скорее всего можно подпилить его под мои нужды, но ума и знаний пока не хватает =))


Место для рекламы.

 

Ответить

Karataev

Дата: Суббота, 04.02.2017, 10:31 |
Сообщение № 16

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

Stormy, сейчас в этой теме переплелись два элемента:
1) формулы, которые ссылаются на внешние файлы
2) OLE
Вам надо наверное создать новую тему, в которой будет про OLE.
А в этой теме обсуждать, почему появляется сообщение, предлагающее изменить связи.

У Вас получилось сделать, чтобы не было сообщения, которое предлагает изменить связи?


Киви-кошелек: 9166309108

 

Ответить

skais675

Дата: Суббота, 04.02.2017, 19:42 |
Сообщение № 17

Группа: Заблокированные

Ранг: Форумчанин

Сообщений: 138


Репутация:

3

±

Замечаний:
100% ±


Excel 2010

Stormy, Конечно можно подпилить — само собой. Либо кто Вам мешает копировать файлы на время обновления в одну папку (если это не так часто происходит).


Vlad
skype: skais675
email: skais675@mail.ru

Сообщение отредактировал skais675Суббота, 04.02.2017, 19:55

 

Ответить

Stormy

Дата: Понедельник, 06.02.2017, 11:07 |
Сообщение № 18

Группа: Проверенные

Ранг: Обитатель

Сообщений: 357


Репутация:

12

±

Замечаний:
0% ±


Excel 2010

Karataev,
Вы безусловно правы, но.

У Вас получилось сделать, чтобы не было сообщения, которое предлагает изменить связи?

Да, создав два файла и выставив разрешения , все получилось.
Но проблема теперь в другом, переношу эти же настройки на другой файл и все. Обновляться автоматом не хочет.
Эти проблемы связаны (OLE и обновление связей), OLE тут особой роли не играет, но вносит свои ограничения.

Либо кто Вам мешает копировать файлы на время обновления в одну папку (если это не так часто происходит).

Дело в том, что открываемый Excel файл сохраняется в локальную папку, а после закрытия удаляется из нее.

Пойду покумекаю дальше, решение какое-то простое, просто на ум не приходит %)


Место для рекламы.

 

Ответить

Аналог функции ДВССЫЛ, работающий с закрытыми книгами

Автор 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.

Надеюсь я более-менее понятно выразил свою идею… Нужно мнение человека (а лучше нескольких), что из этого всего реально, а что нет. Буду благодарен за любое обоснованное мнение! И спасибо, что хотя бы дочитали =)

Like this post? Please share to your friends:
  • Excel связь одной ячейке от другой
  • Excel символ новой строки в формуле
  • Excel связь одной таблицы с другой
  • Excel символ неразрывного пробела
  • Excel связь один ко многим