导入Excel文件以访问表单

时间:2014-08-22 20:09:05

标签: excel vba ms-access

我已经用尽了所有可以找到的资源,在我确定我的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)':   方法'项目'对象'形式'失败

不确定会出现什么问题。我确实让代码在某一点上工作,但不知怎的,我开​​始看到错误信息。

编辑:我在表单处于设计视图时测试了代码,并且执行时没有任何问题。在窗体和布局视图中,错误提示仍然存在。

2 个答案:

答案 0 :(得分:1)

我从未弄清楚问题是什么,但我制作了表格的副本并引用了该表格。之后代码工作正常。

答案 1 :(得分:1)

为了将来参考,decompiling the database通常会解决此问题。访问通常会导致这些"轻微腐败"当你进行大量的vba开发时。我认为它与存储二进制文件的方式有关。反编译后一定要紧凑和修复。这将删除任何剩余的垃圾二进制文件。它们会导致文件大小在一段时间后膨胀。