2015-08-31 2 views
2

Я создал пользовательскую форму vba, которая появится, когда я хочу напечатать что-то из exel или word. Но мне сложно установить его как надстройку (так что это применимо ко всем офисным документам, которые я пытаюсь распечатать).Не удается установить пользовательскую форму в качестве надстройки в Excel и Word

Этот вопрос возник из stackoverflow.com Вопрос по Unknown Ответ Я нашел аналогичный вопрос и употребил код для установки, упомянутый здесь, но он дает мне ошибку.

Вот ссылка: How to create a macro that will open a userform from an Add-in without opening the workbook

Здесь ошибка:

An unexpected error has occured, please contact CSC DM

Design with the bellow error details.

Module = UserfulGeneric Code

Procedure = CreateMMMacroMenu

Line = 0

Error Code = 91

Error Text = Object veriable or With block variable not set

Что я могу сделать, чтобы решить, что? Я новичок в vba, и любая помощь будет высоко оценена.

+1

AFAIK, вам нужна книга Excel AddIn, которая имеет свойство 'IsAddIn' установлена ​​в' True' и сохраняется как **. Xlam ** файл. Меню ** Действия ** должно быть допустимым Sub в файле AddIn. Если вы копируете все, что указано в прилагаемой ссылке, прокомментируйте ** В поле «Ошибка при повторном запуске» далее **, затем попробуйте выполнить его, так как ** Erl ** для 'Line = 0' не определен/изменен, поэтому он не помогает где находится фактическая ошибка. – PatricK

+0

Спасибо за ваш ответ. Я сохранил мою книгу как файл надстройки, так что теперь это файл .xlam с свойством IsAddiIn, установленным True. Я загрузил его в свое excel как надстройка, но он не работает. Я думаю, что есть проблема с тем, как он активируется или просто с моим кодом. У меня есть Private Sub ThisDocument_BeforePrint (Cancel As Boolean) в режиме ThisWorkbook и используйте Userform1.Show, чтобы открыть мою форму пользователя. Мой код отлично работал в книге, где я его создал, но я понятия не имею, как заставить его работать как надстройка. –

+0

Вы должны прочитать [События приложения в существующем объектном модуле] (http://www.cpearson.com/excel/appevent.aspx) – PatricK

ответ

0

Это оказывается довольно простым для Excel:

Чтобы продемонстрировать, файл TestAddIn.xlam создается с ThisWorkbook.IsAddin = True, в UserForm и коды в ThisWorkbook модуле.

ProjectWindow


Коды в ThisWorkbook Модуль:

Option Explicit 

Private WithEvents App As Application 

Private Sub App_WorkbookBeforePrint(ByVal Wb As Workbook, Cancel As Boolean) 
    'Debug.Print Now & " " & "App_WorkbookBeforePrint: " & Wb.FullName 
    UserForm1.Show 
End Sub 

Private Sub Workbook_Open() 
    Set App = Application 
    'Debug.Print Now & " " & "Loading " & ThisWorkbook.FullName 
End Sub 


UserForm1:

UserForm1
Код:

Option Explicit 

Private Sub UserForm_Initialize() 
    Me.TextBox1.Text = ActiveWorkbook.FullName 
End Sub 


Теперь убедитесь, что вы добавляете этот AddIn обычно через Excel UI, или использовать VBA для установки в Excel. Но после этого вам нужно перезапустить Excel.

При печати новой книги: пользовательская форма отображается до ее фактической печати.
userform demo

+0

Я копирую/вставляю все, и когда я пытаюсь напечатать это говорит «Тип Несоответствие "и хочет отлаживать ** UserForm1.Show ** в' Private Sub App_WorkbookBeforePrint (ByVal Wb As Workbook, Cancel As Boolean) 'Debug.Print Now & "" & "App_WorkbookBeforePrint:" & Wb.FullName UserForm1.Показать End Sub' –

+0

Можете ли вы проверить загрузку UserForm1? В коде для UserForm1 нажмите F5. – PatricK

+0

Oh, Thanks =) Мне пришлось добавить 1 к UserForm в 'UserForm_Initialize()' =) Теперь он отлично работает. Также быстрый вопрос, как мне изменить код, который вы мне дали, чтобы вызвать тот же UserForm, но в Word? –

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

  • Нет связанных вопросов^_^