我有一个VBA宏,通过一个按钮在excel中运行完美,但我想在excel功能区中包含一个按钮(我已经完成)但我不知道如何正确地将功能区按钮连接到宏,这是我的C#和XML代码:
C#
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");
}
XML
<?xml version="1.0" encoding="UTF-8"?>
<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2009/07/customui" >
<ribbon>
<tabs>
<tab id="TimerTest"
label="Practice Monitoring">
<group id="group1"
label="MailMerge">
<labelControl id="timerLabel"
getLabel="timerLabel_getLabel"/>
<button id="button1"
label="Merge"
size="large"
onAction="'PM MailMerge.xlsm'!MailMerge.MailMerge"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
答案 0 :(得分:1)
这将从当前打开的excel工作簿中运行宏或从xlstart(C:\ Users \\ AppData \ Roaming \ Microsoft \ Excel \ XLSTART)文件夹中可用的工作簿中运行宏
Globals.ThisWorkbook.Application.Run("Your macroname")