Estou precisando de uma ajuda na programação VBA no OUTLOOK.
Através da macro abaixo no Outlook, transfere as informações para um arquivo em EXCEL:
Option Explicit Sub Outlook2Excel() 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
'Configurar novas strings (Celulas) Dim strColE As String
'Configurações do Excel enviro = CStr(Environ("USERPROFILE"))
'A parte da planilha strPath = enviro & "\Documents\outlook2excel.xlsm" 'Nome do arquivo e local. *O arquivo tem que estar criado. On Error Resume Next Set xlApp = GetObject(, "Excel.Application") If Err <> 0 Then Application.StatusBar = "Aguarde por favor enquanto o Excel é executado..." Set xlApp = CreateObject("Excel.Application") bXStarted = True End If On Error GoTo 0
'Abre a planilha para colocar as informações Set xlWB = xlApp.Workbooks.Open(strPath) Set xlSheet = xlWB.Sheets("Plan1") 'nome da guia (o padrão das macros vem como Sheet1 e da erro)
' Processo de gravação da mensagem On Error Resume Next 'Procura a proxima linha vazia da planilha rCount = xlSheet.Range("E" & xlSheet.Rows.count).End(-4162).Row 'Informar qual coluna esta a macro da mensagem 'Pega os valores do Outlook.*As informações tem que estar selecionadas!!!!! Set currentExplorer = Application.ActiveExplorer Set Selection = currentExplorer.Selection 'Pega os selecionados For Each obj In Selection
Set olItem = obj
'Coleta dos campos strColF = olItem.Subject 'Assunto da mensagem strColB = olItem.SenderEmailAddress 'Igual ao senderemailaddress strColE = olItem.Body 'corpo do email strColC = olItem.To 'Nome de quem enviou strColG = olItem.ReceivedTime 'Tempo da ultima resposta strColD = olItem.CC 'Emails copiados
'Escreva na colunas da guia definida xlSheet.Range("E" & rCount) = strColE 'MENSAGEM
'Proxima linha! rCount = rCount + 1
Next
xlWB.Close 1 If bXStarted Then xlApp.Quit 'Fecha a planilha End If
Set olItem = Nothing Set obj = Nothing Set currentExplorer = Nothing Set xlApp = Nothing Set xlWB = Nothing Set xlSheet = Nothing End Sub
---------------
Porem durante o processo, a coluna "E" aumenta o tamanho da linha devido o corpo do email que tem a quebra de pagina. Queria tirar a quebra de pagina em TEMPO REAL, ou seja, assim que transfere a informação.
Pergunta
eliasbrito.wong@gmail.com
Olá!
Estou precisando de uma ajuda na programação VBA no OUTLOOK.
Option Explicit
Sub Outlook2Excel()
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
'Configurar novas strings (Celulas)
Dim strColE As String
'Configurações do Excel
enviro = CStr(Environ("USERPROFILE"))
'A parte da planilha
strPath = enviro & "\Documents\outlook2excel.xlsm" 'Nome do arquivo e local. *O arquivo tem que estar criado.
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If Err <> 0 Then
Application.StatusBar = "Aguarde por favor enquanto o Excel é executado..."
Set xlApp = CreateObject("Excel.Application")
bXStarted = True
End If
On Error GoTo 0
'Abre a planilha para colocar as informações
Set xlWB = xlApp.Workbooks.Open(strPath)
Set xlSheet = xlWB.Sheets("Plan1") 'nome da guia (o padrão das macros vem como Sheet1 e da erro)
' Processo de gravação da mensagem
On Error Resume Next
'Procura a proxima linha vazia da planilha
rCount = xlSheet.Range("E" & xlSheet.Rows.count).End(-4162).Row 'Informar qual coluna esta a macro da mensagem
'Pega os valores do Outlook.*As informações tem que estar selecionadas!!!!!
Set currentExplorer = Application.ActiveExplorer
Set Selection = currentExplorer.Selection 'Pega os selecionados
For Each obj In Selection
Set olItem = obj
'Coleta dos campos
strColF = olItem.Subject 'Assunto da mensagem
strColB = olItem.SenderEmailAddress 'Igual ao senderemailaddress
strColE = olItem.Body 'corpo do email
strColC = olItem.To 'Nome de quem enviou
strColG = olItem.ReceivedTime 'Tempo da ultima resposta
strColD = olItem.CC 'Emails copiados
'Escreva na colunas da guia definida
xlSheet.Range("E" & rCount) = strColE 'MENSAGEM
'Proxima linha!
rCount = rCount + 1
Next
xlWB.Close 1
If bXStarted Then
xlApp.Quit 'Fecha a planilha
End If
Set olItem = Nothing
Set obj = Nothing
Set currentExplorer = Nothing
Set xlApp = Nothing
Set xlWB = Nothing
Set xlSheet = Nothing
End Sub
---------------
Porem durante o processo, a coluna "E" aumenta o tamanho da linha devido o corpo do email que tem a quebra de pagina.
Queria tirar a quebra de pagina em TEMPO REAL, ou seja, assim que transfere a informação.
Como que faço isso no Outlook?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.