 
           
    
                ※ Excel-DNAについては「Excel-DNAの紹介(Excel-DNA)」参照。
                
                「ExcelのメニューからDNAコードを実行する(Excel-DNA)」で紹介したように、実行するプロシージャにExcelCommand属性を付けることによってメニューからコードを実行することができます。
                しかし、保守性・拡張性の観点から見るとこの方法はあまり好ましくありません(項目の増加に伴ってメニューの管理が煩雑になってしまいます)。
                そこで、メニューの項目数が多くなる場合や、より柔軟にメニュー設定を行いたい場合には、下記コードのようにメニュー部分(ユーザーインターフェース)とプログラムコード部分を完全に分けることをお薦めします。
            
dnaファイルのコード(文字コード:utf-8)
                    <DnaLibrary Name="SampleUI" Language="VB">
                      <Reference Name="System.Windows.Forms" />
                      
                      <!-- プログラムコード ここから -->
                      <![CDATA[
                      Imports System.Windows.Forms
                      Imports ExcelDna.Integration.CustomUI
                      
                      Public Module Module1
                        Public Sub buttonOld_onAction()
                          MessageBox.Show("Hello world!")
                        End Sub
                      End Module
                      
                      Public Class MyRibbon
                        Inherits ExcelRibbon
                        
                        Public Sub button2007_onAction(control as IRibbonControl)
                          MessageBox.Show("Hello " & control.Id.ToString() & " 2007!")
                        End Sub
                        
                        Public Sub button2010_onAction(control as IRibbonControl)
                          MessageBox.Show("Hello " & control.Id.ToString() & " 2010!")
                        End Sub
                      End Class
                      ]]>
                      <!-- プログラムコード ここまで -->
                      
                      <!-- CustomUI(2010用) ここから -->
                      <CustomUI>
                        <customUI xmlns='http://schemas.microsoft.com/office/2009/07/customui'>
                          <ribbon>
                            <tabs>
                              <tab id='myTab' label='DNA Menu Tab 2010' insertBeforeMso='TabHome'>
                                <group id='myGroup' label='My Group 2010'>
                                  <button id='myButton' label='My Button 2010' imageMso='HappyFace' size='large' onAction='button2010_onAction' />
                                </group>
                              </tab>
                            </tabs>
                          </ribbon>
                        </customUI>
                      </CustomUI>
                      <!-- CustomUI(2010用) ここまで -->
                      
                      <!-- CustomUI(2007用) ここから -->
                      <CustomUI>
                        <customUI xmlns='http://schemas.microsoft.com/office/2006/01/customui'>
                          <ribbon>
                            <tabs>
                              <tab id='myTab' label='DNA Menu Tab 2007' insertBeforeMso='TabHome'>
                                <group id='myGroup' label='My Group 2007'>
                                  <button id='myButton' label='My Button 2007' imageMso='SadFace' size='large' onAction='button2007_onAction' />
                                </group>
                              </tab>
                            </tabs>
                          </ribbon>
                        </customUI>
                      </CustomUI>
                      <!-- CustomUI(2007用) ここまで -->
                      
                      <!-- CustomUI(2007以前用) ここから -->
                      <CustomUI>
                        <commandBars xmlns='http://schemas.excel-dna.net/office/2003/01/commandbars'>
                          <commandBar name='Worksheet Menu Bar'>
                            <popup caption='DNA Menu'>
                              <button caption='My Button OLD' faceId='1695' onAction='buttonOld_onAction' />
                            </popup>
                          </commandBar>
                        </commandBars>
                      </CustomUI>
                      <!-- CustomUI(2007以前用) ここまで -->
                      
                    </DnaLibrary>
                
            
                Excel-DNAは、上記コードのようにCustomUI要素でユーザーインターフェースをカスタマイズすることができます。
                さらに、customUIもしくはcommandBars要素の名前空間を指定することで、Excelのバージョンに応じてカスタマイズすることも可能になっています(上記コードの場合は2007以前、2007、2010のそれぞれの環境に応じて設定しています)。
                 上記のようにCustomUI要素を使うことによって、より柔軟にユーザーインターフェースを設定することができますが、ExcelCommand属性を使用する場合に比べてコードが複雑になってしまうといったデメリットもあります。
                上記のようにCustomUI要素を使うことによって、より柔軟にユーザーインターフェースを設定することができますが、ExcelCommand属性を使用する場合に比べてコードが複雑になってしまうといったデメリットもあります。
                ExcelCommandとCustomUI要素、状況に応じて使い分けるのが良いでしょう。