【发布时间】:2011-08-02 07:13:52
【问题描述】:
我对 Outlook 中的 VBA 非常陌生。
所以我正在尝试操作任务公式的保存按钮。
我想知道如何制作一个“不同的”保存按钮,实际上它的功能相同,但有一些额外的功能。
那么有人知道如何使用 VBA makro 保存您实际执行的任务吗???
感谢您的帮助
布鲁诺
【问题讨论】:
我对 Outlook 中的 VBA 非常陌生。
所以我正在尝试操作任务公式的保存按钮。
我想知道如何制作一个“不同的”保存按钮,实际上它的功能相同,但有一些额外的功能。
那么有人知道如何使用 VBA makro 保存您实际执行的任务吗???
感谢您的帮助
布鲁诺
【问题讨论】:
您将需要创建一个新的功能区项目,该项目将成为您的自定义按钮,该项目应将您的自定义保存函数定义为其处理程序。以下是如何自定义功能区的示例
namespace OutlookAddIn
{
[ComVisible(true)]
public class RibbonHook : Office.IRibbonExtensibility
{
private Office.IRibbonUI ribbon;
public RibbonHook()
{
}
public string GetCustomUI(string ribbonID)
{
string xml = string.Empty;
switch (ribbonID)
{
case "Microsoft.Outlook.Task":
xml = GetResourceText("OutlookAddIn.RibbonTask.xml");
break;
}
return xml;
}
#region Ribbon Callbacks
//Create callback methods here. For more information about adding callback methods, select the Ribbon XML item in Solution Explorer and then press F1
public void Ribbon_Load(Office.IRibbonUI ribbonUI)
{
this.ribbon = ribbonUI;
}
public void buttonTaskCustomSave_Action(Office.IRibbonControl control)
{
Outlook.Taskitem taskItem = (Outlook.taskItem)OutlookAddIn.Globals.OLA.Application.ActiveInspector().CurrentItem;
//do stuff with the task here
}
#endregion
#region Helpers
private static string GetResourceText(string resourceName)
{
Assembly asm = Assembly.GetExecutingAssembly();
string[] resourceNames = asm.GetManifestResourceNames();
for (int i = 0; i < resourceNames.Length; ++i)
{
if (string.Compare(resourceName, resourceNames[i], StringComparison.OrdinalIgnoreCase) == 0)
{
using (StreamReader resourceReader = new StreamReader(asm.GetManifestResourceStream(resourceNames[i])))
{
if (resourceReader != null)
{
return resourceReader.ReadToEnd();
}
}
}
}
return null;
}
#endregion
}
}
你需要把它添加到你的主插件类中
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
return new RibbonHook();
}
这是功能区 xml
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load">
<ribbon>
<tabs>
<tab idMso="TabTask">
<group id="TaskCustom"
label="Custom Save">
<button id="buttonTaskCustomSave" label="Custom Save" onAction ="buttonTaskCustomSave_Action"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
【讨论】: