2015-08-13 2 views
7

Я создал книгу Excel 2010 с несколькими листами. Код VBA, который выполняет различные манипуляции с данными, находится в нескольких модулях, а также прикреплен к нескольким формам. Книга распространяется на несколько десятков человек в разных отделах. Они будут заполнять свою книгу собственными данными, относящимися к конкретным отделам.Распространять обновленный код Excel VBA нескольким конечным пользователям

Если мне нужно распространять обновление для кода (исправление ошибки или какую-то новую функцию), как это можно сделать? Я не хочу, чтобы пользователям приходилось повторно вводить или копировать/вставлять все свои данные в «новую» рабочую книгу. Я по сути ищу метод обновления VBA Project, который находится внутри их существующей книги.

+3

Корабль код как автономный VBA проект в центре города (т.е. по локальной сети) УПРАЖНЕНИЯ, что учебные пособия данные ссылки при запуске. Или, конвертировать в Visual Studio Tools для Office и использовать развертывание Click-Once –

+0

Будет ли изменяться только код VBA, или изменится структура книги (имена листов, заголовки столбцов, именованные диапазоны и т. Д. И т. Д.)? –

+0

[This] (http://stackoverflow.com/questions/31392299/creating-a-self-install-macro/31393407#31393407) не работает с формами, но это пища для размышлений. – findwindow

ответ

1

Вам необходимо будет экспортировать модули и формы и вручную импортировать их в существующие книги. Раньше я делал это для некоторых проектов, над которыми я работал.

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

Вы также можете сделать это процедурно. Я использовал это для небольших патчей. http://cpearson.com/excel/vbe.aspx

2

Вы можете создать дополнительную вспомогательную рабочую книгу Help.xlsm, у которой ее атрибуты файла установлены только для чтения.

Переместить все vba код, что вам может понадобиться изменить в будущем, в Help.xlsm

файл, который вы распространяете, то необходима ссылка добавление к Help.xlsm

Теперь в будущем изменения могут быть сделаны до Help.xlsm, и они должны появляться в файлах клиента.

Выше предполагается, что все ваши клиенты находятся в одной сети, так что вы можете хранить Help.xlsm где-нибудь, доступный для всех их файлов.

Эта статья объясняет, что лучше, чем у меня: http://www.excelguru.ca/content.php?152-Deploying-Add-ins-in-a-Network-Environment

+0

Я все еще несколько смущен тем, как это реализовать. Я тоже натолкнулся на ссылку, которую вы поделили, и это именно то, что мне нужно. Я просто не могу понять, как включить его в файл .xlam (add-in). Не могли бы вы взглянуть на мой существующий вопрос по этому же вопросу [здесь] (http://stackoverflow.com/questions/35583430/how-would-i-implement-this-code-into-my-excel-add-in)? Было бы очень благодарно. – CaffeinatedCoder

+0

@CaffeinatedCoder Я не использую xlam - я просто использую xlsm с его атрибутом, установленным только для чтения: это означает, что несколько книг могут иметь ссылку на него. – whytheq

+0

Это позор. Вместо этого я использую xlam, чтобы защитить свой код. Я просто не могу понять, как это применить. – CaffeinatedCoder