Option Compare Database
Option Explicit
Dim olapp As New Outlook.Application
Dim pasta As Outlook.Folder
Dim item As Outlook.MailItem
Dim i As Integer
Dim arq_anexo As Outlook.Attachment
Dim repositorio As String
Public Sub desanexa()
'Define a pasta a ser lida
Set pasta = olapp.GetNamespace("MAPI").Folders("Caixa de correio - Paulo K. Todoroki").Folders("Pasta a ser lida")
For i = 1 To pasta.Items.Count
DoEvents
'Se a mensagem for do tipo E-MAIL e marcada como NÃO LIDA
If pasta.Items(i).Class = olMail And pasta.Items(i).UnRead = True Then
'Para cada anexo da mensagem
'Necessário o loop porque o primeiro anexo pode ser uma imagem com a assinatura
For Each arq_anexo In pasta.Items(i).Attachments
DoEvents
arq_anexo.SaveAsFile "C:\Arquivos\" & arq_anexo.FileName
Next arq_anexo
End If
'Marcar a mensagem como lida
pasta.Items(i).UnRead = False
Next
End Sub
Eventualmente dicas sobre outros programas, Windows e hardware.
domingo, 28 de abril de 2013
Desanexando arquivos de uma pasta do Outlook
Escrevi este código para desanexar arquivos dos e-mails de uma pasta (que aqui vou chama-la de "Pasta a ser lida") com a condição de que o e-mail esteja marcado como "não lido".
Utilizo o código para automação de um processo em que preciso processar vários arquivos do tipo texto (*.txt) em determinado horário da noite.
;-)
Preenchendo textbox's em formulários desvinculados no Access
Iniciando pelas boas práticas de programação: nada mais lógico do que nomear um TextBox com o mesmo nome do campo da tabela obviamente respeitando os prefixos.
Exemplo: no formulário o campo txt_nome recebe o valo do campo... nome!
Tenho convivido com situações onde nem sempre isso ocorre. Campo como CNPJ tem variações e é carregado nos formulários em caixas de texto com nomes variados como txt_cnpj, txt_cpfcnpj, txt_cnpj_cli e por ai vai.
Considerando que o boa prática foi respeitada, segue um código que preenche os campos de um formulário sem a necessidade de referenciá-los um a um.
Escrevi o código para facilitar o dia a dia do desenvolvedor que sempre tem um pedido do tipo "é só acrescentar mais um campo...".
Acrescentado o campo e o TextBox correspondente, nada é alterado no código.
;-)
Option Compare Database
Option Explicit
Private Sub Comando8_Click()
Dim nome_campo As String
Dim nome_txt As String
Dim campo_do_form As Control
Dim formulario As Form
ssql = "SELECT * FROM CLIENTES"
Set rst = New ADODB.Recordset
rst.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rst.MoveFirst
Set formulario = Form_frm_teste
For Each campo_do_form In formulario
nome_campo = Replace(campo_do_form.Name, "txt_", "")
If Left(campo_do_form.Name, 3) = "txt" Then
campo_do_form = rst.Fields(nome_campo).Value
End If
Next
rst.Close
Set rst = Nothing
End Sub
Assinar:
Comentários (Atom)
Pesquisar este blog
Quem sou eu
- Kazu
- Administrador de Empresas/Técnico em Processamento de Dados. Microsoft Office User Specialist - Excel Proficient. Pós-graduado em Business Intelligence.