Управление версиями электронных таблиц - PullRequest
6 голосов
/ 26 апреля 2010

У нас много таблиц VBA в электронных таблицах, и много времени люди сохраняют их на локальных дисках. Когда мы хотим обновить электронные таблицы, мы помещаем новую версию на общий диск, но у нас нет никакого способа заставить людей не использовать старые версии электронных таблиц.

Есть ли здесь лучший способ развертывания электронных таблиц vba, поэтому, если кто-то загрузит старую версию, она не откроется или попросит вас обновить. Кажется, что это должно быть проблемой для любого нестандартного решения, поэтому у меня через MS было бы какое-то решение здесь.

Есть ли у Microsoft стандартное решение для управления версиями / развертывания для этого, или мне нужно придумать какое-нибудь домашнее решение (электронная таблица проверяет базу данных при запуске, чтобы проверить версию)

Ответы [ 5 ]

1 голос
/ 26 апреля 2010

Если это просто код VBA, который вы хотите обновить одним решением, это разделить весь код на XLA, расположенный на доступном сервере. затем пользователи Excel имеют загрузчик надстроек, который получает последнюю версию с сервера, или вы можете встроить загрузчик в рабочую книгу. Существует рабочий пример обращения к Addin Loader, доступный по адресу http://www.decisionmodels.com/downloads.htm

0 голосов
/ 27 апреля 2010

Простое решение будет:

  1. Сохраните номер версии где-нибудь в рабочей книге (например, на скрытом листе, чтобы случайно не удалить его) или в виде переменной.
  2. Сохраните текстовый файл с номером последней версии на вашем ресурсе
  3. Включите макрос, который автоматически считывает текст файла последней версии и сравнивает номер версии с номером в текущей рабочей книге. Если он слишком старый, просто покажите окно сообщения (сообщающее пользователю об обновлении) и закройте рабочую книгу.

Я использую аналогичный подход, и он отлично работает.

0 голосов
/ 26 апреля 2010

Добавьте в книгу настраиваемое свойство, такое как GUID, Integer, Date или все, что вам нужно. При запуске проверьте значение и определите, следует ли продолжать VBA или какую-либо другую реализацию, которую вы решите. Обычно я открываю «общую» последнюю версию документа и проверяю ее пользовательское свойство. Если пользователь не использует последнюю версию, отобразите сообщение, предлагающее пользователю получить последнюю версию. Это обычно достаточно хорошо. Я делал это годами с большим успехом для Access, Word и Excel VBA.

Одной из реальных проблем являются люди, которые игнорируют запрос на обновление. Они будут делать это, потому что боятся потерять данные, ошибки в последней версии и так далее. Вы должны решить их проблемы, а не пытаться «привязать» их к «решению» этой проблемы. Я настоятельно рекомендую всегда предоставлять средства для «импорта / обновления» данных до последней версии рабочей книги.

Довольно прост в реализации. Если вы решите вышеупомянутую проблему эффективно, люди начнут доверять «подсказке», и вы обнаружите, что это действительно простое и эффективное решение.

Если ваша рабочая книга привязана к базе данных, она становится немного сложнее. Как правило, вы не позволяете пользователю поддерживать данные за пределами базы данных. Когда они хотят изменить данные, вы создаете для них рабочую книгу. После того, как они закончили изменять данные, вы импортируете данные. (Рабочая книга сохраняется в целях «резервного копирования», или пользователь может сохранить копию рабочей книги для справки или в архиве.) Это позволяет избежать необходимости поддерживать версию документа, поскольку документ является «виртуальным».

0 голосов
/ 26 апреля 2010
  1. Определение свойства текущей версии . Используйте любой способ для этого, как константу в VBA.
  2. Найдите стандартный способ доступа к последней версии . Он может находиться на общем диске всегда по тому же пути или любым другим способом, который у вас есть.
  3. Если номер текущей версии <<em> номер последней версии , тогда:
    • Попросить обновить
    • Показать процедуру обновления
    • Возможно, сделать некоторую блокировку для нормальных операций VBA, пока не будет выполнено обновление
0 голосов
/ 26 апреля 2010

Хотя я этого не делал. Я вижу, что люди делают что-то подобное, когда они хранят код в dll в базе данных, а затем проверяют, что локальные одинаковые при запуске.

...