Caros amigos.
Já procurei em vários lugares e não consegui solução para meu código, por isso peço ajuda aos colegas.
As configurações de referencia ao outlook 2016 no access e permissão de accesso a programação no outlook foram habilitadas.
Preciso que, ao clicar no botão Salvar de um novo contato, ele crie o mesmo contato no outlook.
Tentei com o código abaxio (Adaptado de um modelo de criar tarefas no outlook fornecida pelo Avelino Sampaio) mas não Funciona para contatos.
Provisoriamente estou usando uma tabela vinculada dos contatos do outlook no access, mas está muito lento. por isso gostaria de fazer funcionar esse comando para gerar o contato diretamente no outlook sem precisar do vinculo de tabela.
Quando executo o comando com os pontos de interrupção, todas as etapas são passadas sem errro até fechar o formulário, mas o contato não é gerado no outlook.
Quando executo o comando sem os pontos de interrupção, o form fica com o status de "não respondendo" por vários minutos, mas ao retornar nada acontece, nem fecha o formulário nem adiciona o contato no outlook.
'Salvar contato
'Form de Cadastro de Cliente é aberto a partir do Form Ordem de Serviço
Private Sub BtSalvar_Click()
On Error GoTo Sair
DoCmd.Save
Form.Recalc
'Insere o novo cliente cadastrado no campo cliente da Ordem de Serviço
Forms!FrmOS!Cliente = Me.IDC
'Coloquei este procedimento para atualizar a combobox do campo cliente no FrmOS
DoCmd.RefreshRecord
'Criar novo contato do outlook com os dados do cliente recem cadastrado
' Call ContatoOutlook
'Fecha o formulario de cadastro de cliente
DoCmd.Close acForm, "CadClientesDet", acSavePrompt
Sair:
Exit Sub
End Sub
Public Sub ContatoOutlook()
'Criando as variáveis que irão assumir as propriedades e métodos das classes do outlook
Dim objOut As Outlook.Application
Dim objCont As ContactItem
Dim Nome, Tel, Cel, Sexo As String
'Carrega os dados à exportar para as variáveis temporárias
Nome = Me.Nome
Tel = Nz(Me.Tel, "")
Cel = Nz(Me.Cel, "")
Sexo = Nz(Me.Sexo, "0")
'Carregando a coleção do Outlook
Set objOut = CreateObject("Outlook.Application")
'Abrindo o formulário de contatos para inserir os itens
Set objCont = objOut.CreateItem(olContactItem)
'Passando os valores do formulário exemplo para os itens de email
With objCont
.FirstName = Nome
.MobileTelephoneNumber = Cel
.HomeTelephoneNumber = Tel
Select Case Sexo
Case "0"
.Gender = olUnspecified
Case "Feminino"
.Gender = olFemale
Case "Masculino"
.Gender = olMale
End Select
End With
End Sub
Informações adicionais. Office 2016 - 64 bits
Já procurei em vários lugares e não consegui solução para meu código, por isso peço ajuda aos colegas.
As configurações de referencia ao outlook 2016 no access e permissão de accesso a programação no outlook foram habilitadas.
Preciso que, ao clicar no botão Salvar de um novo contato, ele crie o mesmo contato no outlook.
Tentei com o código abaxio (Adaptado de um modelo de criar tarefas no outlook fornecida pelo Avelino Sampaio) mas não Funciona para contatos.
Provisoriamente estou usando uma tabela vinculada dos contatos do outlook no access, mas está muito lento. por isso gostaria de fazer funcionar esse comando para gerar o contato diretamente no outlook sem precisar do vinculo de tabela.
Quando executo o comando com os pontos de interrupção, todas as etapas são passadas sem errro até fechar o formulário, mas o contato não é gerado no outlook.
Quando executo o comando sem os pontos de interrupção, o form fica com o status de "não respondendo" por vários minutos, mas ao retornar nada acontece, nem fecha o formulário nem adiciona o contato no outlook.
'Salvar contato
'Form de Cadastro de Cliente é aberto a partir do Form Ordem de Serviço
Private Sub BtSalvar_Click()
On Error GoTo Sair
DoCmd.Save
Form.Recalc
'Insere o novo cliente cadastrado no campo cliente da Ordem de Serviço
Forms!FrmOS!Cliente = Me.IDC
'Coloquei este procedimento para atualizar a combobox do campo cliente no FrmOS
DoCmd.RefreshRecord
'Criar novo contato do outlook com os dados do cliente recem cadastrado
' Call ContatoOutlook
'Fecha o formulario de cadastro de cliente
DoCmd.Close acForm, "CadClientesDet", acSavePrompt
Sair:
Exit Sub
End Sub
Public Sub ContatoOutlook()
'Criando as variáveis que irão assumir as propriedades e métodos das classes do outlook
Dim objOut As Outlook.Application
Dim objCont As ContactItem
Dim Nome, Tel, Cel, Sexo As String
'Carrega os dados à exportar para as variáveis temporárias
Nome = Me.Nome
Tel = Nz(Me.Tel, "")
Cel = Nz(Me.Cel, "")
Sexo = Nz(Me.Sexo, "0")
'Carregando a coleção do Outlook
Set objOut = CreateObject("Outlook.Application")
'Abrindo o formulário de contatos para inserir os itens
Set objCont = objOut.CreateItem(olContactItem)
'Passando os valores do formulário exemplo para os itens de email
With objCont
.FirstName = Nome
.MobileTelephoneNumber = Cel
.HomeTelephoneNumber = Tel
Select Case Sexo
Case "0"
.Gender = olUnspecified
Case "Feminino"
.Gender = olFemale
Case "Masculino"
.Gender = olMale
End Select
End With
End Sub
Informações adicionais. Office 2016 - 64 bits