title: Call Excel Macro from Ribbon Button
body: <p>I have a VBA Macro that works perfect in excel via a button, but i want to include a button in the excel ribbon(which i have done) but i do not know how to connect the ribbon button to the macro correctly, here is my C# and XML code:</p>
  
  <p>C#</p>
  
  <pre><code>public class Ribbon1 : Office.IRibbonExtensibility
  {
      private Office.IRibbonUI ribbon;
  
      TimeSpan startTimeSpan = new TimeSpan(0, 0, 5, 0);
  
      TimeSpan timeDecrease = TimeSpan.FromSeconds(1);
  
      private Timer timer = new Timer();
  
      public void Ribbon_Load(Office.IRibbonUI ribbonUI)
      {
          timer.Interval = 1000;
          this.ribbon = ribbonUI;
          timer.Tick += timer_Tick;
          timer.Start();
      }
  
      private void timer_Tick(object sender, EventArgs e)
      {
          if (startTimeSpan.ToString() != "00:00:00")
          {
              startTimeSpan = startTimeSpan - timeDecrease;
              ribbon.InvalidateControl("timerLabel");
          }
          else
          {
              startTimeSpan = new TimeSpan(0, 0, 5, 0);
              return;
          }
      }
  
      public string timerLabel_getLabel(Office.IRibbonControl control)
      {
          return startTimeSpan.ToString();
      }
  
      private void button1_onAction(Office.IRibbonControl control)
      {
          Globals.ThisWorkbook.Application.Run("'PM MailMerge.xlsm'!MailMerge.MailMerge");
      }
  </code></pre>
  
  <p>XML </p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2009/07/customui" &gt;
  &lt;ribbon&gt;
  &lt;tabs&gt;
    &lt;tab  id="TimerTest" 
          label="Practice Monitoring"&gt;
      &lt;group  id="group1" 
              label="MailMerge"&gt;
        &lt;labelControl id="timerLabel" 
                       getLabel="timerLabel_getLabel"/&gt;
        &lt;button   id="button1" 
                  label="Merge" 
                  size="large" 
                  onAction="'PM MailMerge.xlsm'!MailMerge.MailMerge"/&gt;
      &lt;/group&gt;
    &lt;/tab&gt;
  &lt;/tabs&gt;
  &lt;/ribbon&gt;
  &lt;/customUI&gt;
  </code></pre>