一般来说,我们都是把窗体“另存为”一个.oft的文件,然后如果要发布给很多人,一个是发布到exchange server上大家共用,一个是只发布到自己。 通常是使用“工具->窗体->发布窗体”来进行发布,但是如果窗体很多。。而且每个人都要发布。。那就挺麻烦的。
实现代码
把下面的代码保存为xxx.vbs文件,放到.oft同一个目录就可以自动发布了。当然,你可以要相应修改一下
Sub PublishForm(objOL, olns, strPath, trueName, displayName, folderId)
Dim objItem ' As Outlook.ContactItem
Dim objFD ' As Outlook.FormDescription
Dim MyFolder
Const olPersonalRegistry = 2
Const olFolderRegistry = 3
Const olDiscard = 1
Set objItem = objOL.CreateItemFromTemplate(strPath)
Set objFD = objItem.FormDescription
Set MyFolder = olns.GetDefaultFolder(folderId)
With objFD
.Name = trueName
.DisplayName = displayName
.PublishForm olFolderRegistry, MyFolder '请参考msdn,olPersonalRegistry 是发布到personal文件夹
End With
objItem.Close olDiscard
Set objFD = Nothing
Set objItem = Nothing
End Sub
Const olFolderCalendar = 9
Const olFolderTasks = 13
Dim path
'取得当前位置
path = createobject("Scripting.FileSystemObject").GetFolder(".").Path+"\"
Dim objOL,olns
Set objOL = CreateObject("Outlook.Application")
Set olns = objOL.GetNameSpace("MAPI")
Call PublishForm(objOL, olns, path+"Activity.oft","命名","显示名称",olFolderTasks)
Set objOL = Nothing
Set olns = Nothing
参考文章
To distribute Microsoft Outlook forms to other users
Automating the Installation of Outlook Forms for off-line users
http://www.txsz.net/xs/delphi/3/Outlook%20TypeLib%28MSOUTL9.OLB%29.htm
FormDescription.PublishForm Method