Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

samesdavis

[Resolvido] VS2010 - Incluir um evento no Microsoft Outlook 2007

Mensagens Recomendadas

samesdavis    5
samesdavis

Tenho um formulário para cadastro de pendencias dentro de um programa feito em visual studio.  Desejo que após eu clicar em salvar os dados, além desses dados serem transferidos para a tabela(isso já está sendo feito) desejo também que esses dados sejam gravados como [COMPROMISSO] na agenda do Microsoft Outlook 2007, todos os micros tem esse programa instalado e o programa é especifico para isso, só que não tenho nem idéia de como fazer isso, alguém pode me dar uma luz de como fazer isso?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Caça    24
Caça

Tens de criar um Add-in para o Outlook que tem de ser instalado em todas as máquinas. Nesse add-in podes ter por exemplo um procedimento a correr de x em x tempo que vai à tabela da BD verificar o que ainda falta adiconar.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
samesdavis    5
samesdavis

Estou precisando de um modelo de código para eu fazer isso, sei que terei de usar o 'Imports' e também referenciar a dll do outlook, isso é tranquilo, o que não sei fazer é o código para cadastrar o compromisso no outlook.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Caça    24
Caça

Para criar uma tarefa é mais ou menos isto

Dim O As New Outlook.Application
Dim T As Outlook.TaskItem = CType(O.CreateItem(Outlook.OlItemType.olTaskItem), Outlook.TaskItem)
T.Subject = "Testes Agenda"
T.Body = "Teste"
T.StartDate = Now
T.Save()

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
samesdavis    5
samesdavis

Muito obrigado, vou testar depois te respondo.

Só mais uma dúvida, como faço para deixar esse novo compromisso para ficar me lembrando de 15 em 15 dias?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
samesdavis    5
samesdavis

Vê aqui: http://office.microsoft.com/en-us/outlook-help/command-line-switches-HP001003110.aspx

Aparentemente basta-te fazer (não testado)

criar ficheiro (temporario) com dados
executar ".../outlook /c ipm.task /a ficheiro"
apagar ficheiro temporario???

Obrigado, eu  até fiz um teste, só que ele me abe uma tela para eu digitar os mesmos valores que acabei de digitar:

Sub teste()

    Shell ("C:\Arquivos de programas\Microsoft Office\Office12\OUTLOOK.EXE /c ipm.task")

End Sub

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
samesdavis    5
samesdavis

Pessoal,

A intenção desse código é que quem está logado no sistema, possa encerrar uma pendencia e logo em seguida o sistema pergunta se a pessoa quer ou não agendar sobre essa pendencia na agenda do Microsoft Office 2007, se clicar em sim, a função abaixo é executada e a pendencia é marcada na agenda de quem encerrou a pendencia. Só que estou com um problema, eu defini um e-mail padrão para agendar essa pendencia, mesmo se o Joaquim encerrasse a pendencia, o agendamento seria feito na agenda do Henrique, entenderam como?


Sub Agendamento(ByVal strAssunto As String, ByVal strConteudo As String, ByVal wcli As String)

        Dim OutlookApp As New Outlook.Application
        Dim ns As Outlook.NameSpace
        Dim OutlookAppointment As Outlook.AppointmentItem = CType(OutlookApp.CreateItem(Outlook.OlItemType.olAppointmentItem), Outlook.AppointmentItem)

        OutlookApp = CreateObject("Outlook.Application")

        ns = OutlookApp.GetNamespace("MAPI")

        Try

            With OutlookAppointment
                .Recipients.Add("samesdavis@empresa.com.br")
                .Location = wcli
                .Body = strConteudo
                .Start = CDate(DateAdd("d", 14, Now.ToShortDateString) & " 8:00:00")
                .End = CDate(DateAdd("d", 14, Now.ToShortDateString) & " 8:00:00")
                .ReminderSet = True
                .ReminderMinutesBeforeStart = 60
                .Subject = "Requisitar Feedback da pendência " & strAssunto
                .Save()
                .Send()
            End With
            wAgendamentoOK = True

        Catch ex As Exception
            wAgendamentoOK = False
            If Err.Number = 287 Then
                MsgBox("Para que o agendamento seja feito," & Chr(10) & "o Microsoft Outlook 2007 tem de estar aberto e configurado.", MsgBoxStyle.Critical, "Erro de envio de e-mail")
                Frm_MenuPrincipal.Cursor = Cursors.Default
            Else
                MsgBox("Ocorreu o seguinte erro ao realizar o agendamento:" & Chr(10) & Err.Description, MsgBoxStyle.Critical, "Erro de agendamento")
                Frm_MenuPrincipal.Cursor = Cursors.Default
            End If
            Exit Sub
        End Try


    End Sub

A variável wcli irá trazer o nome do cliente.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
samesdavis    5
samesdavis

O que está acontecendo, é que o agendamento está sendo feito apenas para quem está encerrando a pendencia, o segundo agendamento não está sendo feito para a segunda pessoa.  Só funciona se depois de eu ter feito o agendamento, eu ir no agendamento e clicar em convidar participantes, aí aparece o nome daquela pessoa que eu selecionei, no caso o samesdavis@empresa.com.br, quando eu clico em enviar, a pessoa recebe um email de agendamento e tem que clicar em aceitar, então aí sim, o agendamento é feito.  o que desejo é que eu não precise se clicar em enviar, ele já mande de uma vez esse agendamento para a pessoa, entendeu?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
samesdavis    5
samesdavis

Consegui resolver o problema


Call Lembrete(Format(wPendencia, "00000"), wmensagem, Me.cboID_cliente_pendencia.Text)


Sub Lembrete(ByVal strAssunto As String, ByVal strConteudo As String, ByVal wcli As String)

        Dim ol As New Outlook.Application
        Dim ns As Outlook.NameSpace
        Dim itmTask As Outlook.TaskItem = CType(ol.CreateItem(Outlook.OlItemType.olTaskItem), Outlook.TaskItem)

        ol = CreateObject("Outlook.Application")
        ns = ol.GetNamespace("MAPI")
        Try

            If wcli = "" Then wcli = "Nenhum"
            With itmTask
                .Assign()
                .Recipients.Add("chefão@empresa.com.br")
                .Subject = "Feedback " & strAssunto & " (" & wcli & ")"
                .StartDate = CDate(DateAdd("d", 14, Now.ToShortDateString) & " 9:00:00")
                .Body = strConteudo
                .ReminderSet = True
                .ReminderTime = CDate(DateAdd("d", 14, Now.ToShortDateString) & " 8:00:00")
                .DueDate = CDate(DateAdd("d", 14, Now.ToShortDateString) & " 9:00:00")
                .Save()
                .Send()
            End With

            wAgendamentoOK = True

        Catch ex As Exception
            wAgendamentoOK = False
            If Err.Number = 287 Then
                MsgBox("Para que o agendamento seja feito," & Chr(10) & "o Microsoft Outlook 2007 tem de estar aberto e configurado.", MsgBoxStyle.Critical, "Erro de envio de e-mail")
                Frm_MenuPrincipal.Cursor = Cursors.Default
            Else
                MsgBox("Ocorreu o seguinte erro ao realizar o agendamento:" & Chr(10) & Err.Description, MsgBoxStyle.Critical, "Erro de agendamento")
                Frm_MenuPrincipal.Cursor = Cursors.Default
            End If
            Exit Sub
        End Try



    End Sub


Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade