Como simplificar tarefas de rotina usando VBA

Olá, Habr! Sou Sergey Chebarev, analista da equipe de visualização de dados da Severstal-Infocom, e hoje direi como você pode automatizar sua rotina de trabalho usando aplicativos VBA e Office. VBA (Visual Basic for Applications) é uma versão simplificada do Visual Basic, incorporada a muitos produtos do Microsoft Office e, portanto, esses produtos podem ser amigos uns dos outros.





 A aplicação mais óbvia do VBA (que ainda é frequentemente e não muito corretamente chamada de macros) é a automação de tarefas típicas com muitos passos repetitivos que demoram muito para fazer com as mãos, entediantes e repletos de erros de fadiga. Vamos considerar uma dessas tarefas.





Crie eventos no Outlook via Excel

Portanto, tenho uma tarefa: preciso criar eventos no calendário e enviar convites aos usuários com dados para fazer logon no servidor de terminal. 





Não parece muito difícil à primeira vista, mas:





  • Os convites devem ser enviados de uma caixa de correio compartilhada





  • O corpo do convite deve conter o estilo de design corporativo





  • Há um limite para o número de usuários no servidor de terminal por dia, então você precisa controlar o número de eventos





, 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