我已经用尽了所有可以找到的资源,在我确定我的Access DB损坏之前我想发布这个问题:
我正在开发一种工具,它将从Excel表单导入数据,该表单将分发给几百个人。我已经并行创建了一个Access表单,我正在尝试创建一个宏,它将使用Excel表单中的数据自动填充Access表单字段。
以下是我正在使用的代码:
Sub Import_Click()
Dim objDialog As Object
Dim CEtarget As Form
Dim CEfile As String
Set CEtarget = Forms("Data Entry")
Set CEsource = Excel.Application
Set objDialog = Application.FileDialog(3)
With objDialog
.AllowMultiSelect = False
.Title = "Select Form"
.filters.Clear
.filters.Add "*.xlsm; *.xlsx; *.xls", "*.xlsm; *.xlsx; *.xls"
.Show
If .SelectedItems.Count = 0 Then
Exit Sub
Else
CEfile = .SelectedItems(1)
CEsource.Workbooks.Open (CEfile)
CEsource.Visible = True
End If
CEtarget.FirstName.Value = CEsource.Range("B14")
End Sub
错误发生在以下字符串中:
Set CEtarget = Forms("Data Entry")
我收到以下错误:
运行时错误' -2146500594(800f000e)': 方法'项目'对象'形式'失败
不确定会出现什么问题。我确实让代码在某一点上工作,但不知怎的,我开始看到错误信息。
编辑:我在表单处于设计视图时测试了代码,并且执行时没有任何问题。在窗体和布局视图中,错误提示仍然存在。
答案 0 :(得分:1)
我从未弄清楚问题是什么,但我制作了表格的副本并引用了该表格。之后代码工作正常。
答案 1 :(得分:1)
为了将来参考,decompiling the database通常会解决此问题。访问通常会导致这些"轻微腐败"当你进行大量的vba开发时。我认为它与存储二进制文件的方式有关。反编译后一定要紧凑和修复。这将删除任何剩余的垃圾二进制文件。它们会导致文件大小在一段时间后膨胀。