2014-02-10 2 views
2

У меня возникли проблемы с настройкой ленты.
1. Только макросы работают как атрибуты onAction или getPressed. Функции в стандартных модулях не работают. Обратные вызовы, написанные в стандартных модулях, также не работают.
2. Как я могу использовать значение поля редактирования в функции VBA?Доступ к элементам ленты выполняется с помощью функций VBA

Это XML из моей ленты, например:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> 
    <ribbon startFromScratch="true"> 
     <tabs> 
      <tab idMso="TabHome"> 
       <group idMso="GroupFont" visible="false" /> 
      </tab> 
      <tab id="CustomTab" label="Клиенты"> 
       <group id="PeopleGroup" label="Люди"> 
        <toggleButton id="ToggleButton1" size="large" 
         label="Все люди" 
         onAction="Pplopenmacro" imageMso="ContactPictureMenu"/> 
        <editBox id="PeopleEditBox" 
          label="Поиск по рег№" 
          onChange="MyEditBoxCallbackOnChange" /> 
        <button id="Button3" label="TEST" 
         size="normal" onAction="=Person_choose()" /> 
       </group> 
       <group id="CompaniesGroup" label="Компании"> 
        <toggleButton id="ToggleButton2" size="large" 
         label="Компании" 
         onAction="Cmpnopenmacro" imageMso="MeetingsWorkspace" /> 
       </group> 
      </tab> 
      <tab id="CustomTab2" label="Документы"> 
       <group id="MyGroup" label="Документы" > 
        <button id="Button1" label="Счета" 
         size="large" onAction="Invoiceopenmacro" imageMso="BusinessFormWizard" /> 
        <button id="Button2" label="Хуета" 
         size="normal" /> 
       </group > 
      </tab> 
     </tabs> 
    </ribbon> 
</customUI> 

И это мои функции в модуле станд:

Public Sub MyEditBoxCallbackgetText(control As IRibbonControl, ByRef strText) 

' Callback EditBox 

' Select Case control.Id 
'  Case "PeopleEditBox" 
'   strText = "Hello World" 
' End Select 

MsgBox "1" 

End Sub 


Public Sub MyEditBoxCallbackOnChange(control As IRibbonControl, strText As String) 

' Callback Editbox: Returnvalue Editbox 

' Select Case control.Id 
'  Case "PeopleEditBox" 
'    MsgBox "Value Editbox: " & _ 
'    strText, vbInformation, "Sample EditBox" 
' End Select 

MsgBox "2" 

End Sub 


Public Sub Person_choose() 

'DoCmd.openForm "People", acNormal 
MsgBox "Yahoo!" 

End Sub 

ответ

2

Вам может понадобиться сказать XML, где можно найти порядок. Пример -

<group id="PeopleGroup" label="People"> 
    <toggleButton id="ToggleButton1" size="large" 
     label="All People" 
     onAction="ThisWorkbook.Pplopenmacro" imageMso="ContactPictureMenu"/> 
    <editBox id="PeopleEditBox" 
      label="Search by Region #" 
      onChange="ThisWorkbook.MyEditBoxCallbackOnChange" /> 
    <button id="Button3" label="TEST" 
     size="normal" onAction="ThisWorkbook.Person_choose()" /> 
</group> 

ThisWorkbook. означает, что процедуры находятся в ThisWorkbook объекта (см Проводнике проекта в окне редактирования VBA)

Я никогда не поставил обратные вызовы в стандартный модуль, но так как вы что, возможно, вам нужно что-то вроде onAction="MyModuleName.Pplopenmacro" в XML?

+1

Пожалуйста, не используйте русский язык, даже на таблицах из фрагментов кода –

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