Note: The other languages of the website are Google-translated. Back to English

Como criar lembretes do Outlook a partir de planilhas do Excel?

Este artigo fala sobre a criação de lembretes do Outlook com base em dados de planilhas do Excel.

Lembretes do Outlook de Creta em planilhas do Excel com código VBA


Lembretes do Outlook de Creta em planilhas do Excel com código VBA

Se você deseja criar lembretes do Outlook a partir do Excel, faça o seguinte.

1. Crie uma planilha que contém os cabeçalhos das colunas e os campos de lembrete correspondentes, conforme a captura de tela abaixo.

Nota: Para o status ocupado coluna, número 2 significa que o lembrete será mostrado como Ocupado no calendário do Outlook. Você pode mudar para 1 (provisório), 3 (Fora do Escritório), 4 (trabalhar em outro lugar)ou 5 (grátis) como você precisa.

2. aperte o outro + F11 chaves para abrir o Microsoft Visual Basic para Aplicações janela.

3. No Microsoft Visual Basic para Aplicações janela, clique em inserção > Módulo. Em seguida, copie o código do VBA abaixo para a janela de código.

Código VBA: crie lembretes do Outlook a partir de planilhas do Excel

Sub AddAppointments()
'Update by Extendoffice 20180608
    Dim I As Long
    Dim xRg As Range
    Dim xOutApp As Object
    Dim xOutItem As Object
    Set xOutApp = CreateObject("Outlook.Application")
    Set xRg = Range("A2:G2")
    For I = 1 To xRg.Rows.Count
        Set xOutItem = xOutApp.createitem(1)
        Debug.Print xRg.Cells(I, 1).Value
        xOutItem.Subject = xRg.Cells(I, 1).Value
        xOutItem.Location = xRg.Cells(I, 2).Value
        xOutItem.Start = xRg.Cells(I, 3).Value
        xOutItem.Duration = xRg.Cells(I, 4).Value
        If Trim(xRg.Cells(I, 5).Value) = "" Then
            xOutItem.BusyStatus = 2
        Else
            xOutItem.BusyStatus = xRg.Cells(I, 5).Value
        End If
        If xRg.Cells(I, 6).Value > 0 Then
            xOutItem.ReminderSet = True
            xOutItem.ReminderMinutesBeforeStart = xRg.Cells(I, 6).Value
        Else
            xOutItem.ReminderSet = False
        End If
        xOutItem.Body = xRg.Cells(I, 7).Value
        xOutItem.Save
        Set xOutItem = Nothing
    Next
    Set xOutApp = Nothing
End Sub

Nota: No código acima, A2: G2 é o intervalo de dados no qual você deseja criar compromissos com base.

4. aperte o F5 ou clique no botão Executar para executar o código. Em seguida, todos os compromissos com campos específicos serão inseridos no calendário do Outlook de uma vez.

E então, você pode ir para o calendário do seu Outlook para ver os resultados, veja a imagem: 


Kutools for Outlook - traz 100 recursos avançados para o Outlook e torna o trabalho muito mais fácil!

  • Auto CC / BCC por regras ao enviar e-mail; Avanço automático Vários emails por encomenda; Resposta automatica sem servidor Exchange e mais recursos automáticos ...
  • Aviso BCC - mostrar mensagem quando você tentar responder a todos se o seu endereço de e-mail estiver na lista BCC; Lembrar quando houver anexos ausentes, e mais recursos de lembrete ...
  • Responder (todos) com todos os anexos na conversa de correio; Responder muitos e-mails em segundos; Adicionar saudação automaticamente quando responder; Adicionar data ao assunto ...
  • Ferramentas de anexo: gerenciar todos os anexos em todos os e-mails, Desanexação Automática, Comprimir tudo, Renomear tudo, Salvar tudo ... Relatório rápido, Contar e-mails selecionados...
  • Lixo eletrônico poderoso por costume; Remover e-mails e contatos duplicados... Permite que você faça de maneira mais inteligente, rápida e melhor no Outlook.
tiro kutools aba kutools do outlook 1180x121
tiro kutools outlook kutools mais guia 1180x121
 
Comentários (51)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Oi lá,

Ótima fórmula/código.


O que acontece é que esse código gera várias entradas no calendário do Outlook se for executado mais de uma vez por engano. Eu também queria que fosse configurado como um modelo para que a equipe pudesse usá-lo. Eles podem colocar as datas e os detalhes restantes são necessários e, quando executados, devem listar as entradas no calendário do Outlook. Quaisquer dados do Excel excluídos também devem ser excluídos do Outlook e o mesmo se aplica a quaisquer alterações. Quando eu salvo a planilha excel ela salva no formato excel padrão, mas quero que ela seja salva com Macros para que não perca o código e o pessoal possa usar quantas vezes precisar. Você pode aconselhar e fazer alterações relevantes no código? Obrigado
Este comentário foi feito pelo moderador no site
Oi,
Para salvar as macros para uso futuro na pasta de trabalho, você precisa clicar em Arquivo > Salvar como > Procurar > selecione uma pasta para salvar a pasta de trabalho > escolha “Pasta de trabalho habilitada para macro do Excel” no menu suspenso Salvar como tipo > Salvar.
Este comentário foi feito pelo moderador no site
Oi,

Como posso enviar os lembretes para várias pessoas? Por favor ajude.
Este comentário foi feito pelo moderador no site
Olá, obrigado pelo código, mas estou lutando com isso apenas colocando a primeira entrada no Excel no Outlook. Como faço para que ele entre em todos os itens de linha?
Aqui está o meu código, adicionei uma cor de categoria


Sub Adicionar Compromissos()
'Atualizar por Extendoffice 20180608
Escurecer eu enquanto
Dim xRg como intervalo
Dim xOutApp como objeto
Dim xOutItem como objeto
Set xOutApp = CreateObject("Outlook.Application")
Definir xRg = Range("A2:G2")
Para I = 1 Para xRg.Rows.Count
Definir xOutItem = xOutApp.createitem(1)
Debug.Print xRg.Cells(I, 1).Value
xOutItem.Subject = xRg.Cells(I, 1).Value
xOutItem.Location = xRg.Cells(I, 2).Value
xOutItem.Start = xRg.Cells(I, 3) + xRg.Cells(I, 8).Value
xOutItem.Duration = xRg.Cells(I, 4).Value
xOutItem.Categories = xRg.Cells(I, 9).Value
If Trim(xRg.Cells(I, 5).Value) = "" Então
xOutItem.BusyStatus = 2
Outro
xOutItem.BusyStatus = xRg.Cells(I, 5).Value
Se acabar
Se xRg.Cells(I, 6).Valor > 0 Então
xOutItem.ReminderSet = Verdadeiro
xOutItem.ReminderMinutesBeforeStart = xRg.Cells(I, 6).Value
Outro
xOutItem.ReminderSet = Falso
Se acabar
xOutItem.Body = xRg.Cells(I, 7).Value
xOutItem.Salvar
Definir xOutItem = Nada
Seguinte
Definir xOutApp = Nada
End Sub
Este comentário foi feito pelo moderador no site
Estou tendo o mesmo problema, o código funciona muito bem, mas está apenas adicionando o primeiro compromisso ao calendário. Aqui está o meu código:

Sub Adicionar Compromissos()
'Atualizar por Extendoffice 20180608
Escurecer eu enquanto
Dim xRg como intervalo
Dim xOutApp como objeto
Dim xOutItem como objeto
Set xOutApp = CreateObject("Outlook.Application")
Definir xRg = Range("A2:G2")
Para I = 1 Para xRg.Rows.Count
Definir xOutItem = xOutApp.createitem(1)
Debug.Print xRg.Cells(I, 1).Value
xOutItem.Subject = xRg.Cells(I, 1).Value
xOutItem.Location = xRg.Cells(I, 2).Value
xOutItem.Start = xRg.Cells(I, 3).Value
xOutItem.Duration = xRg.Cells(I, 4).Value
If Trim(xRg.Cells(I, 5).Value) = "" Então
xOutItem.BusyStatus = 2
Outro
xOutItem.BusyStatus = xRg.Cells(I, 5).Value
Se acabar
Se xRg.Cells(I, 6).Valor > 0 Então
xOutItem.ReminderSet = Verdadeiro
xOutItem.ReminderMinutesBeforeStart = xRg.Cells(I, 6).Value
Outro
xOutItem.ReminderSet = Falso
Se acabar
xOutItem.Body = xRg.Cells(I, 7).Value
xOutItem.Salvar
Definir xOutItem = Nada
Seguinte
Definir xOutApp = Nada
End Sub
Este comentário foi feito pelo moderador no site
Você precisa alterar Set xRg = Range("A2:G2") para ser A":onde quer que seus dados terminem, portanto, se você tiver 20 linhas, será A2:G20.
Este comentário foi feito pelo moderador no site
Olá! Adorei a ideia deste código, mas tenho algumas dúvidas:


1. Ele não será executado por causa do "bug" nesta linha (erro 440, erro de tempo de execução):
xOutItem.ReminderMinutesBeforeStart = xRg.Cells(I, 6).Value
2. Se eu não quiser necessariamente colocar os cabeçalhos das colunas de A2:G2, posso simplesmente alterá-lo no código (ex: F3-K3), ele ainda funcionará?
3. Como ele sabe se conectar ao meu Outlook?


Obrigado pela sua resposta, eu realmente aprecio isso!
Este comentário foi feito pelo moderador no site
Oi Alexandra,
O erro 440 não ocorreu no meu caso. Qual versão do Office você usa?
O código não funcionará se você simplesmente alterar o código para F3:K3. Se precisar da resposta, vou tentar descobrir.
Esta linha "Set xOutApp = CreateObject("Outlook.Application")" ajudará a conectar os dados do Excel ao aplicativo Outlook.
Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Olá, o código parece muito útil, mas tem uma desvantagem, se o arquivo for atualizado continuamente, ele criará um novo lembrete toda vez que for executado. Uma linha pode ser adicionada para excluir todos os lembretes anteriores e criar novos?
Também isso pode ser exportado para várias contas do Outlook?
Este comentário foi feito pelo moderador no site
Oi Keith,
Desculpe não poder ajudá-lo com isso. Você precisa excluir todos os lembretes anteriores manualmente no Outlook. E os lembretes são adicionados apenas à conta padrão do Outlook. Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Isso tem potencial para ser uma grande ajuda. Obrigado!. Você pode adicionar um marcador em uma nova coluna que é ativado quando um lembrete é gerado para essa linha (manual ou automatizado), mas pula linhas com marcadores na próxima vez que você executar a macro? 
Este comentário foi feito pelo moderador no site
este código funciona, mas apenas para a primeira entrada. Como você ajusta para o alcance: Sheet3!A2:G17 ?

Eu mudei o código para dizer: Set xRg = Range("Set xRg = Range("A2:G2") No entanto, ele ainda pega apenas a primeira linha no Outlook.
Este comentário foi feito pelo moderador no site
Dia bom,
Por favor, substitua a linha Set xRg = Range("A2:G2") por Set xRg = Worksheets("Sheet3").Range("A2:G17").
Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Olá Cristal,
Já troquei a linha e funciona, mas 'corpo' na segunda linha e assim por diante não sai como lembrete, mas apenas pega a primeira linha.
Por favor informar..
Este comentário foi feito pelo moderador no site
como adicionar outros participantes também neste compromisso.
Este comentário foi feito pelo moderador no site
Olá Dharma,
Desculpe, o problema ainda não pode ser resolvido. Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Olá Cristal! Ótimo código.

Preciso adicionar/convidar participantes. Qualquer ideia?
Este comentário foi feito pelo moderador no site
caro webmaster
obrigado pelo código. Estou com um problema, pois não foi implementado. (erro de tempo de execução '-21447467263 (80004001)': Não implementado.
quando pressiono o botão de depuração, ele destaca a linha de código "xOutItem.Save" 28.
você poderia dar solução deste problema?
Saudações
singgih
Este comentário foi feito pelo moderador no site
Olá singh,
Desculpe por responder tão tarde. Preciso saber sua versão do Excel para descobrir o problema. Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Você sabe como posso colocar um evento durante todo o dia?
Este comentário foi feito pelo moderador no site
Oi,
Desculpe não pode ajudar a resolver o problema ainda.
Este comentário foi feito pelo moderador no site
Oi,

É possível usar o código para fazer a entrada no calendário do grupo no Outlook?
Este comentário foi feito pelo moderador no site
Oi,
Desculpe não pode ajudar a resolver o problema ainda.
Este comentário foi feito pelo moderador no site
Se eu usar isso em um gráfico de Gantt e atualizar as datas de vencimento, devo executar novamente? Existe uma maneira fácil de remover do calendário sem excluir cada um individualmente?
Este comentário foi feito pelo moderador no site
quando usamos o código VBA para lembrete, o erro é exibido
Erro do compilador:
O tipo definido pelo usuário não está definido
depois de pressionar o botão ok
cursor move em DIM xRg como Range

por favor ajude...??
Este comentário foi feito pelo moderador no site
Olá vinet,
Desculpe pela inconveniência. Qual versão do Excel você está usando?
Este comentário foi feito pelo moderador no site
Oi ..
Devemos executar esta macro sempre para ativar o lembrete? ou só precisamos clicar apenas uma vez? então está tudo bem abrir o computador e fechar o arquivo excel?

Obrigado.
Este comentário foi feito pelo moderador no site
Olá Juice,
Basta um clique para executar o código, então os lembretes preparados serão criados automaticamente no calendário do Outlook. Depois disso, você pode fazer o que quiser.
Este comentário foi feito pelo moderador no site
Oi, Existe uma maneira de automatizar a execução deste código, por exemplo. ao abrir o outlook?
Este comentário foi feito pelo moderador no site
Olá chan,
Como o código é salvo na pasta de trabalho do Excel, não podemos executá-lo automaticamente ao abrir o Outlook. Desculpe por isso.
Este comentário foi feito pelo moderador no site
Olá,

Quando sigo as etapas exatas com o Microsoft Outlook aberto e em execução em segundo plano, a execução da macro me dá um erro "Erro de compilação: procedimento externo inválido". Qualquer ajuda seria apreciada.

obrigado
Este comentário foi feito pelo moderador no site
Oi Abe
Como os campos de lembrete foram criados em uma planilha, você precisa adicionar o código à janela de código do módulo da pasta de trabalho do Microsoft Excel e executá-lo no Excel.
Este comentário foi feito pelo moderador no site
tenho uma tabela dinâmica em excel para ser disponibilizada no corpo do lembrete. Podemos fazer isso ? por favor, sugira como
Este comentário foi feito pelo moderador no site
Portanto, temos uma planilha do Excel na qual inserimos as datas de expiração das licenças e estamos imaginando como faríamos isso para que, quando adicionarmos novas datas de expiração, elas sejam adicionadas automaticamente ao nosso calendário do Outlook com lembretes um mês antes e duas semanas antes. O que isso exigiria?
Este comentário foi feito pelo moderador no site
Olá, é possível especificar em qual calendário o lembrete será adicionado. Gostaria de adicioná-los a um calendário de caixa de correio compartilhado para que todos na equipe recebam o lembrete, em vez de meu calendário de e-mail pessoal
Este comentário foi feito pelo moderador no site
Oi! 
Você encontrou uma maneira de adicionar o(s) lembrete(s) a toda a equipe? Quero incluir apenas mais uma pessoa e gostaria de saber se é possível e como fazer isso
Este comentário foi feito pelo moderador no site
Olá, muito obrigado por este código. Funciona lindamente em janelas. Você sabe como posso implementar isso no Mac? Estou há alguns dias tentando encontrar uma maneira, uma maneira que encontrei é criar um AppleScript mas não tenho conhecimento de como fazer isso. Outra maneira era usar uma máquina virtual executando o Windows 10, mas não é minha maneira ideal de trabalhar.
Este comentário foi feito pelo moderador no site
Erro "Este objeto não suporta esta ação" em xOutItem.ReminderMinutesBeforeStart = xRg.Cells(I, 6).Value
Não há comentários postados aqui ainda
carregar mais
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos