|
É do conhecimento de todos, a possibilidade de ligação do Outlook e do
Exchange a uma base de dados, como por exemplo, através do Access.
No entanto, apesar de haver algum conhecimento nesta área, a
reprodução dessa informação é escassa.
Nesta página ser-lhe-á explicado detalhadamente como fazê-lo.
Os utilizadores que já trabalham com os formulários de Outlook, poderão
deparar-se com alguns problemas, nomeadamente na impressão, mas
também no acompanhamento do desenvolvimento do trabalho com os
formulários.
Isto significa que:
Se o programador criar uma aplicação com o Outlook de modo a que, toda a
informação seja armazenada numa pasta pública de um Exchange
Server, são poucas as formas simples de trabalhar os resultados.
Se tentar ligar o Access ao Outlook desta simples forma:
-
No
Access, clique em New Table para adicionar uma nova
tabela.
-
Na
caixa de diálogo New Table, seleccione Link Table,
e depois OK.
-
Na
caixa de diálogo Link, nas Files of type,
seleccione Outlook() ou Exchange().
-
Se
for requisitado um perfiç do Outlook, indique qual vai querer
utilizar.
-
No
Link Exchange/Outlook Wizard, seleccione a pasta que vai
querer trabalhar, depois faça clique em Next.
-
Dê
um nome á tabela ligada e finalmente clique em Finish.
Vai
consegui-lo, mas os campos criados pelo programador não serão
reconhecidos.
Para que esses mesmos campos sejam reconhecidos siga os seguintes passos:
(Eu criei esta base de dados com base na aplicação da Microsoft, Help Desk
- http://office.microsoft.com/downloads/9798/helpdesk.aspx)
Crie uma base de dados com o nome “importoutlook.mdb”, em seguida na
base de dados crie uma tabela com o nome “tblHdrs”, com os
seguintes campos:
Remetente
Assunto
Recebido
Fechado
Software
Os
Tecnico
Tipoprob
Historial
Após a criação da tabela, crie de seguida um módulo e adicione o
seguinte código:
Option Compare Database
Dim ol As New
Outlook.Application
Dim PublicFolder As
MAPIFolder
Dim OldTaskItems As Items
Dim itm As Outlook.TaskItem
Dim AppPath As String
Sub
ImportItems()
Set PublicFolder =
ol.GetNamespace("MAPI").Folders("Public
Folders").Folders("All Public
Folders").Folders("PT").Folders("Help Desk
Application").Folders("Tarefas Antigas")
Set OldTaskItems =
PublicFolder.Items.Restrict("[Subject] > ''")
Dim nmritens As Integer
nmritens =
OldTaskItems.Count
'
' If nmritens = 0 Then
' MsgBox
"Não há itens"
' Else
' MsgBox
" Existem " & nmritens & " itens para
importar"
' End If
For Each itm In OldTaskItems
If nmritens > 1 Then
Set appAccess =
CreateObject("Access.Application")
strAccessPath =
appAccess.SysCmd(9)
strDBName =
"c:/documents and Settings/ricardosilva/my Documents/mdb/"
& "importoutlook.mdb" 'strAccessPath & "importoutlook.mdb"
Set dbe = CreateObject("DAO.DBEngine.36")
Set wks =
dbe.Workspaces(0)
Set dbs =
wks.OpenDatabase(strDBName)
Set rst =
dbs.OpenRecordset("tblHdrs")
rst.AddNew
rst.remetente =
itm.UserProperties("Behalf")
rst.assunto =
itm.UserProperties("Subject")
rst.recebido =
itm.UserProperties("Received Date")
rst.fechado =
itm.UserProperties("Close Date")
rst.software =
itm.UserProperties("Computer Software")
rst.os =
itm.UserProperties("Computer OS")
rst.tecnico
= itm.UserProperties("Technician Name")
rst.tipoprob =
itm.UserProperties("Problem Type")
rst.historial =
itm.UserProperties("History Text")
rst.Update
rst.Close
dbs.Close
End If
Next
End Sub
Tenha
em conta o seguinte:
Na
referência às Public Folders, altere para corresponder à sua.
No meu
caso, eu tenho a Help Desk Application, por baixo de PTque por sua
vez, está na estrutura das All Public Folders.
Na
localização da base de dados, faça as alterações necessárias
de forma a colocar o caminho para a sua.
A minha
base de dados encontra-se em c:\documents and Settings\ricardosilva\my
Documents\mdb\
Depois,
é só correr o módulo e aguardar os resultados.
Dois
pontos finais em relação a problemas que possam surgir:
Se os
formulários não tiverem sido publicados, irá surgir a mensagem
para fazer “enable ou disable macros”.
Terá de
fazer clique em “enable macros” para funcionar
correctamente.
Poderão
surgir erros no módulo, de modo a que o código pare. Isto poderá
dever-se ao facto dos campos da tabela de Access terem Field Size
muito pequenos (normalmente o field size de um campo de texto é
50), os quais deverão ser aumentados, Após a alteração do
tamanho dos campos, basta correr novamente o código para funcionar
correctamente.
|