Macro Salvar como contato do Outlook Access

Se um dia você tentou usar a Macro "Executar Comando > Salvar como contato do outlook" deve ter se deparado com um pequeno problema: ela não funciona!

O banco de dados de exemplo do Access 2007 (o Northwind 2007) possui um formulário com um botão que usa essa macro e faz exatamente o que ela tem que fazer, salvar o registro vigente como um contato do Outlook. Mas quando tentamos fazer o mesmo nos nossos formulários, essa macro não funciona.

Analisando a fundo como o Northwind fazia usava essa macro e como ela funcionava, ficou claro que ela estava restritamente ligada a uma das tabelas do referido banco. Se copiar e colar essa tabela ("Clientes" é a tabela do Northwind 2007 que estamos falando) no seu banco ela, aparentemente não possui nenhuma funcionalidade diferente de qualquer outra tabela. Porém, criando um formulário dela e usando a Macro "Executar Comando > Salvar como contato do outlook", a macro funciona perfeitamente.

Então, o segredo está no nome da tabela? Nos dados? Nos tipos de dados?

Bem, aí vai o segredo: WSSTemplateID.

É essa propriedade da tabela, que talvez você nunca tenha ouvido falar, que faz com que a Macro "Executar Comando > Salvar como contato do outlook" funcione para a tabela que você quer.

Eis como alterar essa propriedade:

Crie um novo módulo e insira o código abaixo:

Sub SetWSSPropriedade()
Dim db As DAO.Database
Dim td As DAO.TableDef
Set db = CurrentDb
Set td = db.TableDefs("NomeDaSuaTabela")

' Aqui está onde vai ser alterada a propriedade da sua tabela para que ela seja reconhecida pelo SharePoint e pelo Outlook
ChangeProperty td, "WSSTemplateID", dbInteger, 105

' Aqui você indicará os campos da sua tabela que irão se referir aos campos do Outlook, você pode inserir quantos campos desejar de acordo com os campos existentes no Outlook (campos como "Nome Completo", "Empresa" etc).
ChangeProperty td.Fields("NomeDoSeuCampo"), "WSSFieldID", dbText, "NomeDoCampoNoOutlook"
End Sub

'Essa função muda as propriedades da tabela
Public Sub ChangeProperty(obj As Variant, strNome As String, tipo As Variant, strValor As String)
Dim prp As DAO.Property
Set prp = obj.CreateProperty
prp.Name = strNome
prp.Type = tipo
prp.Value = strValor
obj.Properties.Append prp
End Sub

Prontinho! Agora, é só criar sua Macro que ela vai funcionar que é uma beleza. Claro, imagino que quando usar esse procedimento pela primeira vez, se você não for um usuário(a) avançado, vai enfrentar alguns problemas, mas o blog está aqui para ajudar. Basta perguntar.

4 comentários:

  1. Excelente essa macro ai...
    Gostaria de fazer um pedido...
    Queria colocar um relógio no powerpoint, desse digitais, hh:mm:ss
    ai ele teria q atualizar automaticamente.

    se puder ajudar. abraço!

    ResponderExcluir
  2. Bem, se é possível fazer em Access (eu já testei) então é possível fazer em PowerPoint. Fiz umas buscas aqui e encontrei esse blog: http://indiosdohavai.blogspot.com/2008/12/utilidade-para-power-point-relgio.html

    Ele dê uma lida na notícia dele e veja se o add-in que ele disponibiliza no link:
    http://officeone.mvps.org/autodatetime/autodatetime.html

    resolve seu problema. Caso ainda assim não consiga, avise que tento eu mesmo uma solução.

    ResponderExcluir
  3. obrigado pela ajuda...
    consegui fazer um meia boca aqui...

    ResponderExcluir
  4. Olá Flávio, bom dia,
    Já utilizei várias dicas aqui postadas, mas esta Macro "Executar Comando > Salvar como contato do outlook" não estou conseguindo resolver. Utilizo o Banco de Dados Northwind 2007 já faz muito tempo, criei um Novo Banco de Dados "Empresário 2015" já formatado com Tabelas/consultas/Formulários/Macros/Módulos. Seria possivel me encaminhar ela com as alterações para a minha tabela (tblClientes). Agradeço desde já
    Pedro P Neto

    ResponderExcluir