Автор Тема: Перенос VBA-формы из одного Excel-файла в другой.  (Прочитано 4307 раз)

Оффлайн Администратор

  • Administrator
  • Сообщений: 1641
Есть два варианта, как перенести VBA-форму из одного Excel-файла в другой.

Вариант 1
  • Откройте в программе "Excel" два Excel-файла: один Excel-файл - это файл, в котором есть VBA-форма, а второй Excel-файл - это файл, в который нужно скопировать VBA-форму;
  • перейдите в программу "VBA", в окне "Project" Вы увидите VBA-проекты этих двух Excel-файлов;
  • посмотрите, есть ли уже в VBA-проекте, в который надо скопировать VBA-форму, VBA-формы. Если есть, то посмотрите имена этих VBA-форм. Имена форм не должны совпадать с именем копируемой VBA-формы. Если совпадают, то переименуйте VBA-форму. Переименовать можно в любом VBA-проекте. Переименовать нужно потому, что нельзя будет скопировать, если имена VBA-форм будут совпадать;
  • левой кнопкой мыши перетащите форму из одного VBA-проекта в другой;
  • в том VBA-проекте, в который скопировали VBA-форму, нажмите вверху "Сохранить", чтобы сохранить изменения.
Вариант 2
  • Создайте на Рабочем столе папку с именем "Форма", чтобы было удобно;
  • перейдите в программу "VBA" - щёлкните по форме, которую нужно скопировать в другой Excel-файл, правой кнопкой мыши - "Export File...";
  • выберите только что созданную папку "Форма" - "Открыть" - "Сохранить";
  • в папке "Форма" окажется два файла формы;
  • чтобы вставить в другой Excel-файл эти два файла, откройте в программе "Excel" Excel-файл, в который нужно вставить эти два файла, перейдите в программу "VBA";
  • в окне "Project" найдите VBA-проект этого Excel-файла и щёлкните по нему левой кнопкой мыши;
  • если в VBA-проекте, в который надо скопировать VBA-форму, есть VBA-форма с таким же именем, то переименуйте, т.к. нельзя будет скопировать, если имена VBA-форм будут совпадать;
  • затем вверху "File" - "Import File..." - выберите файл с расширением "frm" (обратите внимание, что не видно файла с расширением "frx") - "Открыть";
  • в Excel-файле появится форма;
  • нажмите вверху "Сохранить";
  • папку "Форма" с Рабочем стола можете удалить, т.к. она больше не нужна.

Примечание 1
При вставке VBA-формы в Excel-файл могут быть проблемы, если будут совпадать имена VBA-форм.
Если имена VBA-форм совпадают, т.е. если в Excel-файле уже есть VBA-форма с таким именем, то переименуйте VBA-форму, прежде чем Вы будете копировать в Excel-файл VBA-форму.

Иногда из-за проблем с именами не получается скопировать форму из одного Excel-файла в другой. В этом случае нужно закрыть программу "Excel" и снова открыть и повторить действия.
Примечание 2
VBA-форма состоит из двух файлов:
  • у одного файла расширение "frm";
  • у второго файла расширение "frx".
Содержимое frm-файла видно в программе "VBA", а содержимое frx-файла VBA-программист никогда не видит. Я так думаю, что в frx-файле содержатся данные, чтобы рисовать на мониторе форму, например, размеры формы и её элементов управления (кнопок и тому подобного).
Frx-файл создаётся автоматически при создании VBA-формы и изменяется при внесении изменений на VBA-форму, например, при создании кнопки на VBA-форме.