Word Plugin

4 отговора 112 прегледа
#1

Word Plugin

имам си значи едно плъгинче за Word. то си създава toolbar с няколко бутона, които правят разни магии.
всичко си върви много точно до момента, когато реша да отворя втори документ. тогава бутоните престават да функционират. демек като се намирам в първия отворен, натискането на бутон от моя toolbar си пуска съответната функция. щом се преместя в друг документ, това не става.

явно проблема е в начина, по който се връзвам към Click събитието на тези бутони. някой знае ли как е "най"-правилно да става това връзване, че да не зависи в кой документ съм.

стой та гледай
Отговор
в отговор на lndependent #2

Re: Word Plugin

Най-вероятно /но не 100%/ е нужно да се прави toolbar за всеки документ поотделно. Не може да се каже с абсолютна сигурност преди да се види какво създава самия plug-in като код.
Обектния модел на Word е достатъчно добре показан в MSDN и е достъпен по стандартния за VB начин, например:
Set myDoc = Documents("Report.doc")
Set myTable = Documents("Sales.doc").Tables(1)
Отлична статия на темата е "Microsoft Word Objects" в MSDN, chapter 7 от Microsoft Office 97/Visual Basic Programmer's Guide.
За да се работи винаги с обектите на текущия документ, може да се ползва ActiveDocument, например:
ActiveDocument.SaveAs FileName:="Temp.doc"

Ако дадеш код от самия Plug-in може да се търси и точната причина, засега всичко е само в сферата на догадките

чети и дишай по-леко
Отговор
в отговор на Pechenia #3

Re: Word Plugin

абе не е баш така...
toolbar си се прави един път за целия Application :

set bar = Application.CommandBars.Add(blabla)

и тоя toolbar си се показва при всеки следващ отворен документ. въпроса е там, че евентите на бутоните вече не се прихващат при тях. като че ли бутоните не съществуват, въпреки че кода си ги намира:

on error goto add
set button = bar.Controls("MyButton") 'още тук си го намира
add:
if button is nothing then
set button = bar.Controls.Add (blabla)
end if

намира си го значи, обаче button_Click не се вика...

смахната работа...

стой та гледай
Отговор
в отговор на lndependent #4

Re: Word Plugin

Не знам какво си чел, ама прасване на toolbar, на бутон на него и асоцииране на събитие с него няма нищо общо с Click(). Ето ти и примерния код от хелпа:

Правиш един бутон с подразбиращо се има CommandButton1. На Click събитието му връзваш следното:

Private Sub CommandButton1_Click()
Set myBar = CommandBars.Add(Name:="Custom", Position:=msoBarFloating)
Set myControl = myBar.Controls.Add(Type:=msoControlButton)
myControl.OnAction = "ttt"
myBar.Visible = True
End Sub

Sub ttt()
MsgBox "alabala"
End Sub

С две думи, за да мога да ти помогна, дай целия код, не ме карай да гадая...

чети и дишай по-леко
Отговор
в отговор на Pechenia #5

Re: Word Plugin

май вече сещам как да се оправя...
много мерси за идеята

стой та гледай
Отговор