#vba #ms-word #word-2013
#vba #ms-word #word-2013
Вопрос:
Я написал макрос генерации документов на основе формы (на VBA) для распространения среди отдела продаж.
Для простоты использования я хочу предоставить автономный файл, который будет отображать форму, как только документ будет открыт.
Используя автозапуск, я могу заставить форму отображаться по назначению, если word уже открыт и файл dotm открыт внутри. Однако, если я дважды щелкну файл из проводника, ничего не произойдет, и мне придется запускать макрос вручную. Я думал, что AutoExec может разрешить это, но не повезло. Я потратил немало времени, пытаясь заставить это работать с помощью поиска в Google и т. Д., Но у меня ничего не получается.
Как я могу заставить форму отображаться, даже когда файл открывается двойным щелчком мыши? Возможно ли это сделать без необходимости изменять normal.dotm для каждого пользователя?
Для дополнительной информации я использую Word 2013 с полностью включенными макросами во время тестирования. Файл dotm хранится в надежном месте.
Я использую макрос для запуска формы, подобной этой…
Public Sub AutoOpen()
StartPage.Show
End Sub
Я также пытался использовать AutoExec, но безрезультатно.
Комментарии:
1. Вы имеете в виду, что хотите открыть браузер, который позволяет пользователю выбирать только файлы dotm?
2. Привет @user3165438. Нет. Я просто хочу, чтобы форма, которую я разработал, отображалась при открытии документа, независимо от того, открыт ли он с помощью File …Open … или, если он открывается из Windows, либо двойным щелчком по файлу.
3. Возможно, это надстройка Word, которая выполняет действия с событиями. В любом случае, хорошая идея.
4. Может быть, здесь какое-то недоразумение? Генератор. dotm содержит buildingblocks, макросы, формы и стили. Sub AutoOpen() является частью генератора. dotm и вызывает startpage.show. Startpage — это форма, которая также находится в generator.dotm. Все, что мне нужно, это начальная страница. show будет запускаться автоматически при запуске генератора. dotm открыт. Если word не открыт и генератор. при двойном щелчке dotm форма не отображается. Генератор If. dotm открывается в word, форма отображается. Я хочу, чтобы он отображал форму в обоих сценариях.
Ответ №1:
В файле «generator.dotm» перейдите к Visual Basic и перейдите к объекту Microsoft Word «ThisDocument».
В верхней части редактора Visual Basic выберите «Документ» в левой части, а затем нажмите «Создать» в правой части. Private Sub Document_New()
появится метод, который вы сможете редактировать. Затем вы можете вызвать свою пользовательскую форму там. Аналогично:
Private Sub Document_New()
Dim myForm As UserForm1
Set myForm = New UserForm1
myForm.Show
End Sub
Сохраните свой генератор.dotm и дважды щелкните по нему в проводнике Windows, и вы должны получить желаемые результаты.
Комментарии:
1. Большое вам спасибо!! Это сработало отлично, и я ценю, что вы нашли время, чтобы помочь мне с таким основным вопросом. 🙂
2. Зачем вам нужны эти первые две строки кода? Почему вы не можете просто запустить
UserForm1.Show
??3. @SteveS эти две строки кода открывают новый экземпляр, а не открывают тот же экземпляр. Итак, если вы откроете второй документ, форма второго документа будет новой, тогда как если вы это сделаете
UserForm1.Show
, форма будет такой же, как в первом документе, что может вызвать проблемы.