Страницы: 1
RSS
Как запустить файл .frm с помощью VBA
 
Доброго времени суток всем!
При удалении UserForm из книги, эксель предлагает её сохранить. В результате появляется два файла с расширением .frm ( собственно сама форма ) и .frx (не знаю зачем нужен). В дальнейшем, при необходимости, файл .frm можно импортировать и использовать в любую книгу эксель. А можно ли использовать файл .frm средствами VBA без импорта в книгу? Заранее спасибо всем!
 
Ronin751 я думаю это именно форма именно от XL... можно поменять расширение на txt - почитать - поправить код - и использовать наработки в коде где-либо ещё... (но не в воздухе)... конечно, если объектная модель позволяет
p.s.
а без импорта - мне нравится просто из Проводника перетягивать frm (и др модули) в Проект в окне VBEdit... (быстрее, чем через импорт)
Изменено: JeyCi - 19.08.2017 10:22:39
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
я думаю это именно форма именно от XL
Вот я и задумался, а можно ли не нагромождая файл формами, запускать их. Т.Е. Есть некая папка с книгой эксель и несколькими файлами .frm. Макросом из книги эксель запускать тот или иной .frm файл-форму. Как то так.
Рылся в сети но пока не нашел ничего подобного. Всюду речь только про импорт .frm файла.
 
Цитата
Ronin751 написал: Есть некая папка с книгой эксель
вот в этом и суть - нужна книга!.. (ведь даже надстройки хранятся в папке Add-ins в формате, например .xlsm (не .bas и не .cls)
Запустить UserForm из личной книги макросов
Как вызвать UserForm другой книги
(иного я не встречала; честно говоря, и не пользовалась)
P.S.
но параллельно открывает и книгу источник
Изменено: JeyCi - 19.08.2017 14:16:25 (перевложила с полным путём (т.к. прежний не сработал после скачивания для проверки))
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
(иного я не встречала; честно говоря, и не пользовалась)
Вот-вот! И я не встречал. Но надеюсь, что способ всё таки есть.
Application.Run частенько использую, но за ссылки спасибо!
 
Цитата
Ronin751 написал:
надеюсь, что способ всё таки есть
Ronin751, родительский объект для формы - книга. Как Вы без книги собираетесь работать с формой?
 
Цитата
родительский объект для формы - книга
Уж простите меня друзья. По всей видимости я не правильно выражаю мысль.
Идея в следующем: Допустим есть "Книга 1" с формой "UserForm1" и кнопкой "CommandButton1". По нажатию "UserForm1.CommandButton1" должна быть вызвана форма "UserForm2". Сама же "UserForm2", в свою очередь, хранится в виде файла .frm.
Как то так.
 
А в чём глубинный смысл всего этого?
 
Как вариант, при необходимости, импортировать форму в проект. По окончании работы с ней - удалять из проекта.
Архив распаковать в папку с файлом (файлы *.frm и *.frx должны лежать рядом с книгой, в которую они импортируется)
Не прописаны различные проверки (типа на наличие такой формы в проекте, в папке и так далее)
Код для UserForm2, из которой происходит импорт/удаление UserForm1
Код
Private Sub CommandButton1_Click()
With ThisWorkbook
    .VBProject.VBComponents.Import Filename:= _
        .Path & Application.PathSeparator & "UserForm1.frm"
End With
End Sub

Private Sub CommandButton2_Click()
    UserForm1.Show
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Set iVBComponents = ThisWorkbook.VBProject.VBComponents
    For Each iVBComponent In iVBComponents
        If iVBComponent.Type = 3 And iVBComponent.Name = "UserForm1" Then
            iVBComponents.Remove iVBComponent
            Exit Sub
        End If
    Next
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Sanja! Спасибо за Ваш вариант. Как раз читал об этом здесь.

Цитата
А в чём глубинный смысл всего этого?
Да тут, собственно, и смысла особого то и нет. Просто мысль проскочила в голове. А теперь это зерно всё больше и больше разрастается.  
 
Еще ЗДЕСЬ почитайте
Согласие есть продукт при полном непротивлении сторон
 
Спасибо! Обязательно прочту.  
Страницы: 1
Наверх