如何用VBA在Outlook 365创建本地个人文件夹?报错求助
Outlook VBA创建联系人文件夹报错的解决思路
针对运行时错误'-2147352567 (80020009)'的问题,可按以下方向排查解决:
检查同名文件夹是否已存在
默认联系人文件夹下如果已有名为"My Personal Contacts"的子文件夹,执行创建操作会直接报错。建议在代码中先添加存在性检查,确认不存在时再执行创建逻辑。确认账户存储位置与权限
若默认联系人文件夹属于Exchange账户,可能存在服务器端权限限制,无法创建子文件夹。可切换到本地PST文件的联系人文件夹下尝试创建,代码中可指定本地存储的联系人文件夹:Set myFolder = myNamespace.Stores("你的本地PST文件名").GetDefaultFolder(olFolderContacts)明确指定文件夹类型
调用Folders.Add时,可通过第二个参数明确指定文件夹类型为联系人文件夹,避免因默认类型不匹配导致的错误:Set myNewFolder = myFolder.Folders.Add("My Personal Contacts", olFolderContacts)检查Outlook对象库引用
若未在VBA编辑器中引用Outlook对象库,olFolderContacts常量可能未被识别。可直接用数值10替代,或在VBA编辑器的「工具」-「引用」中勾选Microsoft Outlook xx.x Object Library。
修改后的示例代码
Sub CreatePersonalContacts() Dim myNamespace As Outlook.NameSpace Dim myFolder As Outlook.Folder Dim myNewFolder As Outlook.Folder Dim folderExists As Boolean Dim objFolder As Outlook.Folder Set myNamespace = Application.GetNamespace("MAPI") ' 可替换为本地PST的联系人文件夹 Set myFolder = myNamespace.GetDefaultFolder(olFolderContacts) ' 检查文件夹是否已存在 folderExists = False For Each objFolder In myFolder.Folders If objFolder.Name = "My Personal Contacts" Then folderExists = True Exit For End If Next objFolder If Not folderExists Then ' 指定创建联系人类型文件夹 Set myNewFolder = myFolder.Folders.Add("My Personal Contacts", olFolderContacts) MsgBox "文件夹创建成功" Else MsgBox "该文件夹已存在" End If End Sub
内容的提问来源于stack exchange,提问作者Vagner Hughs
相关产品推荐
相关产品推荐

