Главная » Мои программы для работы с Excel »

Копирование модулей и форм из одной книги в другую

 

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

Копирование компонентов VBA

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

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

Очистить все - удаляет из списка все файлы. Ничего отмечать не надо. Сами файлы не удаляются.

Как использовать:

  1. Выбираете файлы в список "Из каких файлов добавить".
  2. Выбираете файл, в который все это копировать("В какой файл копировать").
  3. Выбираете компоненты для копирования: Стандартные модули, Модули класса или Пользовательские формы.

Сюда не включены компоненты классов ЭтаКнига(ThisWorkbook) и Листов(Worksheets), т.к. при копировании они будут скопированы либо как модули классов, либо в модули аналогичных листов. Т.к. ни первый ни второй вариант не показались мне практичным - я решил исключить эти компоненты из списка. Есть мысли как это сделать - но это может быть появится в следующей версии программы. Если у кого-то есть какие-то предложения по усовершенствованию - пишите на эл.адрес, указанный в программе("О программе...")

Если в процессе копирования, программа обнаружит, что VBA проект защищен паролем - то появиться такая форма:

Запрос пароля

Вам надо будет указать пароль к проекту, после чего программа сама впишет пароль, откроет проект и скопирует указанные компоненты.

Если Вы укажете неверный пароль, то появиться стандартное окно VBA, сообщающее о неверном пароле, а за ним сообщение программы о невозможности копирования. Эта книга будет пропущена и программа перейдет к копированию из другой книги.

Стоит обратить внимание, что при появлении формы ввода пароля начинается обратный отсчет времени(60 сек). По истечении этого времени форма закроется и запароленная книга будет пропущена и компоненты из неё не будут скопированы. Это сделано для того, чтобы если Вы запустили программу и ушли, то она смогла отработать и закрыться без Вашего участия. Если для того, чтобы вспомнить(или найти) нужный пароль Вам потребуется времени больше, чем 60 сек, то надо установить флажок - "Введу пароль позже(остановка таймера отмены)". Отсчет будет остановлен.

Это, пожалуй, все.

Скачать программу »

  Copy_VBAProject_Components.zip (267,7 KiB, 3 879 скачиваний)

Внимание: программа распространяется бесплатно. Распространение данной программы в коммерческих целях запрещено.


Статья помогла? Сделай твит, поделись ссылкой с друзьями!
Обсуждение: оставлено 8 коммент.
  1. Александр:

    Прекрасно!
    Одна проблема!
    Я хочу обновить модуль в нескольких книгах, а программа оставляет старый модуль, новый копирует с индексом 1

  2. Александр:

    Если не жалко... как с помощью макроса скопировать модуль из одного файла в другой (если модуль с таким именем есть то заменить...)?

  3. Александр:

    PS К первому комментарию ,,, может к кнопке копировать прикрутить кнопку заменить?

  4. Виталий:

    Здравствуйте, программа запускается, добавляю файлы, проставляю галочки. В итоге получаю сообщение "ни один компонент не скопирован". Офис 2007 под ХР. Никаких паролей нет.

  5. Виталий, а где расположены коды? Программа выдает подобное предупреждение, если действительно ничего не скопировано. Возможно все коды расположены в модулях листов и книг.

  6. Олег:

    ОС: win7*32Pro, права админа;
    Офис: 2010*32;
    -----------------
    Выбрал файл-источник - Tips_Macro_OpenWord.xls (и свои файлы пробовал),
    выбрал куда копировать - 111.xls,
    клик по [Копировать]...
    Получаю окошко:
    ---------------------------
    CopyVBPrToAnoverBook
    ---------------------------
    Run-time error '-2147024894 (80070002)':

    Не удается открыть для чтения раздел реестра "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\AccessVBOM".
    ---------------------------
    ОК
    ---------------------------

    В чём проблема??... ;-//
    ----------------------
    Спасибо.

  7. Проблема в том, что нет доступа. Не хватает прав пользователя даже на чтение рееста. Что может помочь:
    1 Вариант:
    Заходите в панель управления->Учетные записи пользователей->Изменение параметров контроля учетных записей. Устанавливаете ползунок в самый низ(Никогда не уведомлять). Перезагружаете ПК.
    Если это не помогает - 2 Вариант:
    1. Войдите в Windows 7, используя учетную запись с административными привилегиями, и откройте редактор реестра (Windows + R-> введите regedit->ОK).
    2. Раскройте ветвь HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\.
    3. Щелкните по этомй папке правой кнопкой мыши и выберите Разрешения.
    4. Выберите свою учетную запись и убедитесь, что установлены флажки Полный доступ и Чтение. Если не установлены - проставьте и сохраните параметры.
    После этого лучше сначала перезагрузить ПК.

  8. Elvira:

    Добрый день.
    Вы писали в комментариях
    ..."20 Апрель 2014 в 13:44 | #8 Ответить | Цитата
    Мила, я бы советовал пройти по ссылке из См.также. Есть там такая: Что такое модуль? Какие бывают модули? Потом скачать пример к статье и посмотреть где там коды и как записаны..."
    Где здесь пример к статье???
    В VBAproject я зашла, код скопировала, вставила и дальше застряла)). Прощу прощения за свою экселевскую безграмотность, но имею большое желание научиться некоторым премудростям! Спасибо!

Поделитесь своим мнением

Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме - добро пожаловать на Форум


Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Логин
Наши партнеры
Перейти
Перейти
Счетчики
Анализ сайта

Яндекс.Метрика
© 2016 Excel для всех  Войти