我的任务是在Microsoft Access系统上修复VB中的问题,我无法弄明白。此问题仅发生在运行该软件的5台PC之一上。 我试过了
Dim objOutlook As Outlook.Application
Dim objMailItem As MailItem
Dim db As DAO.Database
'Create email object and send attachment
Set objOutlook = DetectOutlook()
If objOutlook Is Nothing Then
Set objOutlook = New Outlook.Application
End If
我尝试按照其他网站的建议将其更改为此内容。
Dim objOutlook As Object
Dim objMailItem As MailItem
Dim db As DAO.Database
'Create email object and send attachment
If GetObject(, "Outlook.Application") = True Then 'Outlook was already running
Set objOutlook = GetObject(, "Outlook.Application") 'Bind to existing instance of Outlook
Else 'Could not get instance of Outlook, so create a new one
Set objOutlook = New Outlook.Application
End If
此代码更改刚刚结束,强制Access在运行时关闭。 我是VB和Access Development的新手,所以这可能是一个简单的修复,如果您需要任何进一步的信息,请询问。其2016年微软FYI。 提前谢谢
答案 0 :(得分:2)
我怀疑问题是对不同Outlook版本的错误引用。
如果您的用户环境可能使用不同版本的outlook或访问权限,则需要使用后期绑定。您发布的第二个代码是中途,但我建议您在这里阅读; http://sourcedaddy.com/ms-access/late-binding.html
答案 1 :(得分:2)
你可以试试Dreadfool在MSDN建议的一个奇怪的解决方法。它不需要您更改一行代码。
只需将宏保存到另一个文件中,然后将此新文件导入项目即可。这个简单的步骤在我的情况下有所帮助,当代码在更新365后停止工作时。
答案 2 :(得分:0)
在使用Office 2016 ProPlus 64位安装并行安装Visio 2016 64位后,Outlook宏已停止工作(相同的错误消息,但在" GetFolder"调用)。
首先尝试重新启动 - >没有效果。
然后尝试离线修复Office - >没有效果。
然后在线修复 - >让它再次运作。
答案 3 :(得分:0)
将Office升级到2019或Office 365版本时,您需要重新导入自定义开发,即vba中的所有模块,表单等。
只需将所有模块导出到一个文件夹中,将其删除并再次导入即可。它将解决问题。