2011-08-02 3 views
1

Je suis très nouveau avec VBA dans Outlook.Outlook 2007 Problèmes d'enregistrement des tâches

Donc j'essaye de manipuler le bouton de sauvegarde pour les formulaires de tâche. Je me demandais comment faire un bouton de sauvegarde "différent" qui fait la même chose mais avec quelques extras.

Alors, quelqu'un sait comment vous pouvez enregistrer une tâche que vous êtes réellement avec un makro VBA ???

Merci pour l'aide

Bruno

Répondre

0

Vous devez créer un nouvel élément de ruban qui sera votre bouton personnalisé, cet élément devrait avoir votre fonction de sauvegarde personnalisée définie comme gestionnaire. Voici un exemple de la façon de personnaliser le ruban

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 
} 
} 

vous devez ajouter à votre classe principale Addin

protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() 
    { 
     return new RibbonHook(); 
    } 

et c'est le ruban 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>