2012-04-22 3 views
2

Я использую Excel 2010. У меня есть код в фоновом режиме (VBA), который растет время от времени. Я пытаюсь найти способ отделить исходный код от файла xls, поэтому я могу сравнить изменения кода. Другими словами, я хочу, чтобы код был в текстовом файле, и каждый раз, когда я открою файл Excel, исходный код для макросов будет выведен из этого файла.отдельные файлы для кода VB и Excel

Заранее благодарен!

+0

Используйте макрос, чтобы автоматически экспортировать весь код VBA в текстовые файлы. Я рекомендую [этот макрос] (http://stackoverflow.com/a/608899/15639) из [аналогичного вопроса] (http://stackoverflow.com/questions/608872/exporting-vba-code-from-multiple- excel-documents-to-put-in-version-control) об использовании контроля версий с Excel VBA – MarkJ

+0

и как насчет импорта? я не хочу делать это вручную для каждого изменения, которое я сделаю в коде. – ItayB

+0

@ItayB: Взгляните на ответ, полученный мной и комментариями MarkJ на инструмент SourceTools.xla. – shahkalpesh

ответ

0

Прежде всего, спасибо вам всем за ваши ответы. мое решение было: 1. экспортировать все модули в * .bas (по одному файлу на модуль). 2. добавить код модулей свое призвание:

Application.VBE.ActiveVBProject.VBComponents.Import (filename) 

для каждого файла .. 3. после окончания:

Set VBComp = VBProj.VBComponents(moduleName) 
If Err.Number = 0 Then 'no error 
    VBProj.VBComponents.Remove VBComp 

что уберем модуль, поэтому он не будет сохранен в формате XLS, прежде quiting

0

I рекомендовал бы ручной процесс в таком сценарии.

Предположим, вы хотите сделать резервную копию Module1, затем щелкните по нему правой кнопкой мыши и нажмите «Экспорт файла». Вы получите диалоговое окно «Экспорт файла». Сохраните его как, скажем Module1 - 22 Apr - 2012.bas в соответствующем месте. И вы закончили

Как это поможет?

1) Даты в имени файла будет сказать, какая дата создания резервной копии, так что вы можете на самом деле следить за датой, когда макрос был изменен.

2).Bas файлы могут быть открыты с помощью Блокнота. Это поможет вам сравнить текущий код VBA с соответствующим файлом резервной копии.

3) Если в любой момент времени вы хотите, чтобы получить резервную копию с определенной даты, просто удалите существующий модуль (сделайте резервную копию этого, если вы хотите), а затем нажмите на кнопку "Import File "и импортировать его в свой VBA.

enter image description here

НТН

+0

Это хороший процесс, но [почему бы не сделать это автоматически] (http://stackoverflow.com/a/608899/15639) в один клик – MarkJ

+0

Потому что мне не нужен «инструмент» как раз для экспорта моего модуля. Если мне нужно сделать серьезный анализ, то да, я могу пойти на инструмент :) или если у меня не будет 10-15 модулей, которые мне нужно экспортировать каждый день. Если это всего 2-3 модуля, метод Manual просто отлично , –

+0

Спасибо за идею, но я ищу авто решение. Я не единственный программист, и я не хочу пропускать некоторые изменения из-за ручного процесса. – ItayB

1

Посмотрите на различных кода уборщик приложения/код, доступный для VBA, например:

http://www.appspro.com/Utilities/CodeCleaner.htm

Среди прочего, это экспортировать модули/формы/классы в текстовые файлы, удалять их, а затем повторно вставлять в свои проекты.

С несколькими модами, которые составят основу того, что вам нужно.

Другая возможность: в Excel я мало что делаю, но если ее надстройки ведут себя так же, как в PowerPoint, это также может помочь. В PPT автоматически устанавливаются надстройки при загрузке PowerPoint, создаются любые пользовательские интерфейсы и доступны для использования с любыми открытыми файлами в приложении. Чтобы обновить код, вы его модифицируете, создаете новую надстройку, помещаете ее туда, где PPT ее ищет, и перезапускать PPT. Код Voila ... обновлен для всех файлов PPT.

2

Посмотрите на вопрос this.

У этого есть упоминание addin called SourceTools, что я использовал &, чтобы найти его полезным.
Кроме того, он поставляется с исходным кодом, поэтому его можно изменить, чтобы указать его на программное обеспечение для управления исходным кодом (например, SVN), которое является специфичным для вашего использования.

Не стесняйтесь закрыть этот вопрос, так как ссылка, которую я дал, имеет тот же вопрос, что и ваш & отвечает на то, что вы предполагаете.

+0

Определенно используйте SourceTools.xla для экспорта всего проекта одним кликом. (Http://www.codeproject.com/Articles/18029/SourceTools-xla) – ja72

Смежные вопросы