моя компания широко использует провайдера данных, использующего плагин VBA (с закрытым исходным кодом). В принципе, каждый запрос следует определенной структуре:
Заполните одну ячейку формулой, где аргументы формулы определяют запрос
диапазон этой формулы расширен (не формула массива!) и ячейки внизу / справа заполнены данными
Однако, чтобы это работало, у пользователя должна быть установлена терминальная программа на машине, а также ком плагин, на который есть ссылка в VBA/Excel.
Моя проблема
Эти Excelsheets используются и расширяются несколькими пользователями, и не все из них имеют доступ к поставщику данных. Пока они могут открыть лист, он пересчитает и данные исчезнут. Однако частый пересчет не требуется. Я хотел бы, чтобы каждый пользователь мог использовать листы, не выполняя очень специфический набор формул.
попытки
удалите ссылку на те компьютеры, где у меня нет терминального доступа. Это генерирует ошибку NAME в ячейке, содержащей запрос (приемлемо), но этот запрос переопределяет части данных (не приемлемо)
Если вы позволите программе обновить, все данные будут удалены после неудачного запроса
Замените все формулы результатом в виде простого текста в соответствующих ячейках (нажмите кнопку и переберите все ячейки ...). Очевидно, что он уничтожает все возможности обновления, которые предлагают запросы для всех последующих пользователей, что тоже довольно плохо.
Теоретическая идея, и я не уверен, как ее реализовать: замените функции, предлагаемые плагином, на что-то, что будет вызываться либо первым (и передать запрос исходной функции, если таковая имеется), либо вместо оригинальной функция (только путем развертывания решения на нетерминальных машинах), которая просто возвращает исходное значение.
Более конкретно, если моя функция запроса используется следующим образом:
=GETALLDATA(Startdate, Enddate, Stockticker, etc)
Я хотел бы прозрачно поменять функцию позади вызова.
Видите ли вы надежду или я потерялся? Я ценю вашу помощь.
PS: Конечно, я говорю о Bloomberg ...
Некоторые дополнительные моменты, чтобы прояснить вопросы, поднятые Фрэнком:
Формула в листах не может быть изменена. Это критически важное программное обеспечение, и оно слишком сложно для любого здравомыслящего человека, чтобы попытаться прикоснуться к нему.
Можно использовать только Excel и VBA (что является причиной предыдущего пункта ...)
Было бы достаточно предотвратить выполнение этих нескольких конкретных формул / функций на конкретном компьютере для всех листов Excel.
Это все больше и больше похоже на проблему для stackoverflow ;-)