Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

Views

Histats

Vitrine

VBA Outlook - Exportando Campos para o Excel

VBA Outlook - Exportando Campos para o Excel


Vou poupar seu tempo e vamos direto ao código. Explore à vontade!


Option Explicit

 Sub CopyToExcel()
 Dim xlApp As Object
 Dim xlWB As Object
 Dim xlSheet As Object
 Dim rCount As Long
 Dim bXStarted As Boolean
 Dim enviro As String
 Dim strPath As String

 Dim currentExplorer As Explorer
 Dim Selection As Selection
 Dim olItem As Outlook.MailItem
 Dim obj As Object
 Dim strColB, strColC, strColD, strColE, strColF As String
               
' Get Excel set up
enviro = CStr(Environ("USERPROFILE"))
'the path of the workbook
 strPath = enviro & "\Documents\test.xlsx"
     On Error Resume Next
     Set xlApp = GetObject(, "Excel.Application")
     If Err <> 0 Then
         Application.StatusBar = "Please wait while Excel source is opened ... "
         Set xlApp = CreateObject("Excel.Application")
         bXStarted = True
     End If
     On Error GoTo 0
     'Open the workbook to input the data
     Set xlWB = xlApp.Workbooks.Open(strPath)
     Set xlSheet = xlWB.Sheets("Sheet1")
    ' Process the message record
    
    On Error Resume Next
'Find the next empty line of the worksheet
rCount = xlSheet.Range("B" & xlSheet.Rows.Count).End(-4162).Row
'needed for Exchange 2016. Remove if causing blank lines.
rCount = rCount + 1

' get the values from outlook
Set currentExplorer = Application.ActiveExplorer
Set Selection = currentExplorer.Selection
  For Each obj In Selection

    Set olItem = obj
    
 'collect the fields
    strColC = olItem.SenderEmailAddress
    strColB = olItem.SenderName
    strColD = olItem.Body
    strColE = olItem.To
    strColF = olItem.ReceivedTime

' Get the Exchange address
' if not using Exchange, this block can be removed
 Dim olEU As Outlook.ExchangeUser
 Dim oEDL As Outlook.ExchangeDistributionList
 Dim recip As Outlook.Recipient
 Set recip = Application.Session.CreateRecipient(strColC)

 If InStr(1, strColC, "/") > 0 Then
' if exchange, get smtp address
     Select Case recip.AddressEntry.AddressEntryUserType
       Case OlAddressEntryUserType.olExchangeUserAddressEntry
         Set olEU = recip.AddressEntry.GetExchangeUser
         If Not (olEU Is Nothing) Then
             strColC = olEU.PrimarySmtpAddress
         End If
       Case OlAddressEntryUserType.olOutlookContactAddressEntry
         Set olEU = recip.AddressEntry.GetExchangeUser
         If Not (olEU Is Nothing) Then
            strColC = olEU.PrimarySmtpAddress
         End If
       Case OlAddressEntryUserType.olExchangeDistributionListAddressEntry
         Set oEDL = recip.AddressEntry.GetExchangeDistributionList
         If Not (oEDL Is Nothing) Then
            strColC = olEU.PrimarySmtpAddress
         End If
     End Select
End If
' End Exchange section

'write them in the excel sheet
  xlSheet.Range("B" & rCount) = strColB
  xlSheet.Range("c" & rCount) = strColC
  xlSheet.Range("d" & rCount) = strColD
  xlSheet.Range("e" & rCount) = strColE
  xlSheet.Range("f" & rCount) = strColF

'Next row
  rCount = rCount + 1

 Next

     xlWB.Close 1
     If bXStarted Then
         xlApp.Quit
     End If
    
     Set olItem = Nothing
     Set obj = Nothing
     Set currentExplorer = Nothing
     Set xlApp = Nothing
     Set xlWB = Nothing
     Set xlSheet = Nothing
 End Sub


Envie seus comentários e sugestões e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com

✔ Brazil SFE®✔ Brazil SFE®´s Facebook´s Profile  Google+   Author´s Professional Profile  ✔ Brazil SFE®´s Pinterest       ✔ Brazil SFE®´s Tweets

Férias 2016 - 2017

Férias 2016 - 2017




Sim, vamos tirar alguns dias para descansar, sem atualizações, sem pesquisas. Apenas relaxar um pouco e voltamos logo.

Divirtam-se e nos vemos em Janeiro de 2017!


Jennifer Hudson & Tori Kelly - Hallelujah




Envie seus comentários e sugestões e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com

✔ Brazil SFE®✔ Brazil SFE®´s Facebook´s Profile  Google+   Author´s Professional Profile  ✔ Brazil SFE®´s Pinterest       ✔ Brazil SFE®´s Tweets

VBA - 8 Dicas para Reduzir Erros Durante o Desenvolvimento

VBA - 8 Dicas para Reduzir Erros Durante o Desenvolvimento


Certamente não podemos eliminar completamente todos os Bugs do nosso código VBA, mas podemos evitar muitos deslizes comuns durante o processo de criação e desenvolvimento. Geralmente tais cuidados vão requerer um mínimo de ajustes do modo como desenvolvemos nossas aplicações.


1º) - Utilize a expressão Option Explicit no início dos seus módulos. Isso o forçará a inicializar quaisquer variáveis que por ventura crie no seu código. Definirá o tipo e assim saberá o seu conteúdo. É verdade que isso lhe acrescentará um pouco de trabalho, mas o retorno será excelente, pois lhe poupará de problemas como utilizar tipos diferentes de variáveis, escrever erroneamente o nome delas e o melhor de tudo, suas rotinas serão executadas muito mais rapidamente.


2º) - Adapte-se a ideia de "identar" o seu código. A identação ajuda a compreender o fluxo de ideias que o seu código quer transmitir. Serve de ajuda quanto a identificar certo procedimento no código. Se você utiliza: (FOR...NEXT, WHILE, IF, CASE), por exemplo, considere a identação como um modo de facilitar em muito a identificação de partes do seu código.


3º) - Cuidado com a expressão "On Error Resume Next". Esta instância faz com que, por exemplo no MS Excel, ignore qualquer erro e continue o processamento. Em algumas situações fará o Excel ignorar erros que não devem ser ignorados. Talvez existam erros no seu código que você sequer tenha percebido, por causa deste comando.


4º) - Use comentários, não economize com eles. Nada pode ser mais frustrante do que ao revisitar um código desenvolvido a uns meses, perceber que não deixou ali nenhuma "cola" para ajudar no seu trabalho. Adicione alguns comentários para descrever sua lógica, isso poderá lhe poupar muito tempo em eventuais manutenções no código.


5º) - Quando possível, mantenha suas Funções e Rotinas com uma codificação simples e clara. Escreva seu código em módulos pequenos, cada um deles descritos de forma simples e bem definida. Isso tornará qualquer debugagem posterior mais fácil.


6º) - Quando disponível utilize o gravador de macro (ou um gerador automático de código) para ajudá-lo a identificar (definir) as propriedades e métodos. Caso não consiga se lembrar de um nome ou sintaxe de uma propriedade ou método, utilize o gravador de macro (ou um gerador automático de código) para resolver rapidamente o seu problema. E lembre-se, sempre poderá recorrer ao help e à Internet.


7º) - Sempre considere soluções diferentes para o mesmo problema. Não é raro demorarmos para implementar uma solução que não se adequa muito bem a aplicação como um todo. Nesses casos considere a possibilidade de olhar para outro lado e desenvolver algo (por vezes) totalmente diferente para "encaixar" essa solução pontual ao conjunto da aplicação.


8º) - Compreenda como utilizar o debugador. O debugador é uma excelente ferramenta quando usada plenamente. Habitue-se a consultar o help e aprender tudo o que pode retirar do debugador. Conseguirá poupar muito tempo!



Envie seus comentários e sugestões e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com

✔ Brazil SFE®✔ Brazil SFE®´s Facebook´s Profile  Google+   Author´s Professional Profile  ✔ Brazil SFE®´s Pinterest       ✔ Brazil SFE®´s Tweets
Related Posts Plugin for WordPress, Blogger...
diHITT - Notícias