Comment simplifier les tâches de routine en utilisant VBA

Bonjour Habr ! Je suis Sergey Chebarev, analyste dans l'équipe de visualisation de données de Severstal-Infocom, et aujourd'hui je vais vous expliquer comment vous pouvez automatiser votre routine de travail à l'aide des applications VBA et Office. VBA (Visual Basic pour Applications) est une version simplifiée de Visual Basic, intégrée à de nombreux produits Microsoft Office et, par conséquent, ces produits peuvent être amis les uns avec les autres.





 L'application la plus évidente de VBA (qui est encore souvent et pas tout à fait correctement appelée macros) est l'automatisation de tâches typiques avec de nombreuses étapes répétitives qui prennent beaucoup de temps à faire avec les mains, ennuyeuses et semées d'erreurs de fatigue. Considérons l'une de ces tâches.





Créer des événements dans Outlook via Excel

J'ai donc une tâche : je dois créer des événements dans le calendrier et envoyer des invitations aux utilisateurs avec des données pour se connecter au serveur de terminaux. 





Cela ne semble pas très difficile à première vue, mais :





  • Les invitations doivent être envoyées à partir d'une boîte aux lettres partagée





  • Le corps de l'invitation doit contenir le style corporate design





  • Il y a une limite sur le nombre d'utilisateurs sur le serveur de terminaux par jour, vous devez donc garder une trace du nombre d'événements





, Outlook , , , , . . 





  , Excel, Outlook VBA? ​







1. Excel





« », « Microsoft Exchange» , . PowerQuery (, ). .





  , , . List.Dates:





, , 21 :





2 . “ ” “” , , “”   “ ”. :





 *, .





«Subject», «Location» « », , , : , «», — «». « » . PowerQuery :





! “ ”, .





 2. Outlook





VBA Outlook. “” Excel VisualBasic:





  , :





, « », , «»:





Outlook GetObject("Outlook.Application"). GetObject — VBA. . Microsoft.

. , .





subjectStr = " " -  ‘  ()
 
    For Each oAppointmentItem In objNavFolder.Folder.Items
            If InStr(oAppointmentItem.Subject, subjectStr) > 0 Then
            Set N = oAppointmentItem
            N.Copy ‘  
            N.Display
            N.Location = Cells(b, 2) ‘     
            N.Subject = Cells(b, 1) ‘    
            N.Start = Cells(b, 3) + 0.33333
            N.End = Cells(b, 3) + 0.999Exit For
        End If
    Next oAppointmentItem

      
      





. , , , :





 





, ​





3.





, :





 





  , :





, , , . .





, . VBA , . , , .





, . , Excel. , , Outlook. Excel .





, , .








All Articles