无法从 access 2010 代码创建 access 2013 accde

Posted

技术标签:

【中文标题】无法从 access 2010 代码创建 access 2013 accde【英文标题】:can't create access 2013 accde from access 2010 code 【发布时间】:2019-02-18 22:36:26 【问题描述】:

我有一个在 access 2010 64 位中创建的应用程序。此后,我在同一台 PC 上将 access 2010 64 位替换为 access 2013 32 位。该应用程序在两个版本的访问中都可以作为 accdb 文件正常工作,但是当我尝试创建 accde 文件时,我收到错误“访问无法创建 accde 文件” - 这在 access 2010 accde 版本中没有发生。

我计划使用 access 2013 运行时分发应用程序。在一种情况下,我认为问题可能与后期绑定有关,但我认为现在这不合逻辑。

在下面的代码中,编译在“Dim fldr as Office.FileDialogue”处停止,并显示消息“未定义用户定义的类型”(其他地方也有类似的错误)。

 Public Function GetFolderName(Optional OpenAt As String) As String

 Dim lCount As Long
 Dim fldr As Office.FileDialog
 Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
 GetFolderName = vbNullString

With fldr

.InitialFileName = OpenAt
.Show
For lCount = 1 To .SelectedItems.Count
    GetFolderName = .SelectedItems(lCount)
Next lCount
End With
End Function

【问题讨论】:

从您的 VBA 代码窗口检查缺少的引用,在这种情况下,您缺少 Microsoft Office [版本号] 对象库。请参阅此处了解更多信息***.com/questions/9476268/filedialog-doesnt-work 它也停在“dim xx as table”的不同子中,它曾经在 access 2010 中工作,但在 2013 年没有,有很多类似的实例。 我已将引用设置为“Microsoft Office 15 对象库”,但产生了相同的错误。您提到重新安装对象库,但我不知道如何。感谢您的宝贵时间。 你现在实际上在哪里得到错误?同时Dim fldr as Office.FileDialogue?您需要查看是否缺少任何引用,方法是打开 VBA 窗口,然后转到工具 --> 引用。查看是否有任何库被标记为缺失。 至于Dim xx as Table,您在代码中指的是什么类型的表? 【参考方案1】:

试试这个

Public Function GetFolderName(Optional OpenAt As String) As String

 Dim lCount As Long
 Dim fldr As Object
 Set fldr = Application.FileDialog(4)
 GetFolderName = vbNullString

With fldr

.InitialFileName = OpenAt
.Show
For lCount = 1 To .SelectedItems.Count
    GetFolderName = .SelectedItems(lCount)
Next lCount
End With
End Function

有关 MsoFileDialogType 枚举,请参阅此链接:https://docs.microsoft.com/en-us/office/vba/api/office.msofiledialogtype

【讨论】:

在 access 2010 的引用中,有一个引用“Utility”不在 access 2013 中 - 这可能是问题吗? 我重命名了我的 getfoldername 并插入了您的 getfoldername 代码,您的 getfoldername 代码已编译,但我重命名的 getfoldernameX 也是如此。在使用您的代码之前,我还修复了 ms office,但这没有任何改变。我尝试重命名 btnsave_click 但没有编译,ms 说 'dim x as table' 是一个有效的表达式。 我同意dim x as table 是一个有效的表达方式。我的观点是Table 类型指的是在编译期间找不到的库。这会导致您的编译问题,然后导致 accde 构建失败。您需要在代码/引用中引用所有必需的库才能成功构建。如果这段代码没有被使用,那么可以注释掉,看看是否构建成功。

以上是关于无法从 access 2010 代码创建 access 2013 accde的主要内容,如果未能解决你的问题,请参考以下文章

如何防止最终用户在 MS Access 2010 应用程序中从前端查看后端数据?

Access 2010 访问PostgreSQL 无法更新

使用 Access 2010 数据库的 Excel 2010 VBA DAO 查询不起作用

当 Access 2007 数据库设置为“使用 Sharepoint 联机工作”模式时,我的应用程序无法正确连接

从 DoCmd.OpenReport 将参数传递给 Access 2010 报告

检查用户是不是将正确版本的 Access 设置为默认值