Word Plugin
4 отговора
112 прегледа
Word Plugin
имам си значи едно плъгинче за Word. то си създава toolbar с няколко бутона, които правят разни магии.
всичко си върви много точно до момента, когато реша да отворя втори документ. тогава бутоните престават да функционират. демек като се намирам в първия отворен, натискането на бутон от моя toolbar си пуска съответната функция. щом се преместя в друг документ, това не става.
явно проблема е в начина, по който се връзвам към Click събитието на тези бутони. някой знае ли как е "най"-правилно да става това връзване, че да не зависи в кой документ съм.
стой та гледай
всичко си върви много точно до момента, когато реша да отворя втори документ. тогава бутоните престават да функционират. демек като се намирам в първия отворен, натискането на бутон от моя toolbar си пуска съответната функция. щом се преместя в друг документ, това не става.
явно проблема е в начина, по който се връзвам към Click събитието на тези бутони. някой знае ли как е "най"-правилно да става това връзване, че да не зависи в кой документ съм.
стой та гледай
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 може да се търси и точната причина, засега всичко е само в сферата на догадките
чети и дишай по-леко
Обектния модел на 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 може да се търси и точната причина, засега всичко е само в сферата на догадките
чети и дишай по-леко
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 не се вика...
смахната работа...
стой та гледай
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 не се вика...
смахната работа...
стой та гледай
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
С две думи, за да мога да ти помогна, дай целия код, не ме карай да гадая...
чети и дишай по-леко
Правиш един бутон с подразбиращо се има 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
С две думи, за да мога да ти помогна, дай целия код, не ме карай да гадая...
чети и дишай по-леко
Re: Word Plugin
май вече сещам как да се оправя...
много мерси за идеята
стой та гледай
много мерси за идеята
стой та гледай