Notifications
Clear all

Macro Excel utilizando Outlook

4 Posts
2 Usuários
0 Reactions
1,634 Visualizações
(@denis-oda)
Posts: 2
New Member
Topic starter
 

Bom dia,

Criei uma macro de envio de email automático, porém sempre quando rodo a macro pela primeira vez após abrir o arquivo do excel, a macro não cola as informações selecionadas na planilha dentro do corpo do email. Porém quando rodo a macro novamente, funciona normal.

Alguém tem alguma idéia o motivo disso?

Segue o código na parte do envio.

Dim dpto As String
Dim comercial As String
Dim supply As String

Do Until dpto = ""

Workbooks("Check_OK_Fiscal.xlsb").Worksheets("Dpto").Activate

comercial = Range("B" & x).Value
supply = Range("C" & y).Value

Sheets("Check").Select

ActiveSheet.ListObjects( _
"Tabela__10.116.40.22_1434_DEMAND_PLANNING_VW_REPORT_FOLLOW").Range.AutoFilter _
Field:=1

ActiveSheet.ListObjects( _
"Tabela__10.116.40.22_1434_DEMAND_PLANNING_VW_REPORT_FOLLOW").Range.AutoFilter _
Field:=1, Criteria1:="=IRREGULAR", Operator:=xlOr, Criteria2:= _
"=IRREGULAR AGENDADO"

ActiveSheet.ListObjects( _
"Tabela__10.116.40.22_1434_DEMAND_PLANNING_VW_REPORT_FOLLOW").Range.AutoFilter _
Field:=5
ActiveSheet.ListObjects( _
"Tabela__10.116.40.22_1434_DEMAND_PLANNING_VW_REPORT_FOLLOW").Range.AutoFilter _
Field:=5, Criteria1:=dpto

Range( _
"Tabela__10.116.40.22_1434_DEMAND_PLANNING_VW_REPORT_FOLLOW[[#Headers],[STATUS]:[STATUS_PEDIDO]]" _
).Select
Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

'Enviar Email

With OutMail
Set myolapp = CreateObject("outlook.application")
Set mynamespace = myolapp.GetNamespace("MAPI")
Set myitem = myolapp.CreateItem(olmessageItem)

Set myrequiredattendee = myitem.Recipients.Add(comercial & ";" & supply)
myrequiredattendee.Type = 1

myitem.Subject = "FORNECEDORES - OK FISCAL " & Format(Date, "dd/MM/yyyy")

myitem.Body = "FAVOR VERIFICAR SITUAÇÃO DOS FORNECEDORES."

myitem.display

Application.Wait Time + TimeSerial(0, 0, 2)

SendKeys "^({v})", True '<~~ Paste

DoEvents

End With

Sheets("Dpto").Select

i = i + 1
x = x + 1
y = y + 1

dpto = Range("A" & i).Value

Set myolapp = Nothing
Set myitem = Nothing

Loop

 
Postado : 05/08/2015 7:31 am
(@edcronos)
Posts: 1006
Noble Member
 

pelo que reparei quando acontece isso é pela interação do vba e excel
quando tem que le algo da planilha e esse algo é de formula ou de coluna que esteja oculta
e nem sempre a parte que está dando problema é a parte do erro

para evitar esse tipo de efeito, é importante recalcular a planilha caso se tenha formulas
Sheets(Nome_aba).Range(Tabeladeformulas).Calculate

e logo depois bloquear o recalculo

Application.Calculation = xlCalculationManual

até pq as vezes aparece valores estranhos quando não se faz isso

esse procedimento se evita varios problemas

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 05/08/2015 7:45 am
(@denis-oda)
Posts: 2
New Member
Topic starter
 

Edcronos, valeu pela ajuda!

Tentei mas ainda não deu certo. O problema é que a macro não reconhece o email aberto e não consegue colar os valores com sendkeys. Somente quando rodo pela segunda vez.

Também tentei criar um string, porém ele traz "verdadeiro".

 
Postado : 05/08/2015 8:12 am
(@edcronos)
Posts: 1006
Noble Member
 

como a macro funciona na segunda vez que se executa isso significa que não tem nada de errado com ela
oq está acontecendo é falha na interação entre a macro o excel e o outlook

nunca usei o outlook então fica difícil te ajudar de maneira mais exata
talvez incluir um tempo de espera até o outlook abrir completamente

talvez na segunda vez rode pq ele já está preparado e com os documentos em cache

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 05/08/2015 11:21 am