Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Excel文件导入Access表单_Excel_Vba_Ms Access - Fatal编程技术网

将Excel文件导入Access表单

将Excel文件导入Access表单,excel,vba,ms-access,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

我已经用尽了我能找到的所有资源,在我确定我的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)”: 对象“窗体”的方法“项”失败

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


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

我从未找出问题所在,但我复制了该窗体并引用了该窗体。之后,代码工作正常。

作为将来的参考,将经常修复此问题。在进行大量vba开发时,Access通常会遇到这些“小问题”。我认为这与它存储二进制文件的方式有关。还要确保在反编译后进行压缩和修复。这将删除任何剩余的垃圾二进制文件。它们会导致文件大小在一段时间后膨胀

错误消息告诉您在数据库中找不到名为“Data Entry”的表单。再次检查您的表单名称。编辑:同时确保在运行代码时表单处于打开状态。感谢您的回复。当我运行代码时,表单是打开的,所以我知道这不是问题所在。我同意错误是由于表单未被识别,但名称与表单匹配。我认为表单属性中有一个名称设置需要修改-我只是不知道在Access中查找该设置的位置。我对此进行了测试,您的语法很好(如果表单是打开的)。您是否100%确定这是导致错误的行?您能否打开一个新项目,只导入表单“数据输入”,然后尝试使用两行代码来声明为表单,然后设置表单对象?如果它在一个新的/空的项目中运行良好,那么您的腐败理论将具有更大的影响力。我也会尝试打开表单“Data Entry”,将其保存为“Data Entry2”,然后在代码中尝试。若表单已损坏,您可能需要从头开始重新构建它。此外,建议尝试使用相同的set语句,但请参考您首先打开的新的空白表单。我了解到这个错误可能是由表单上字段名中的特殊字符引起的,因此如果它与另一个表单一起工作,您知道它特别带有“数据输入”——然后可以删除每个字段,直到您发现哪个字段有问题。pghcpa,感谢您的评论。除非我在使用debug时完全错过了机会,否则我100%肯定我在那条线上被提示了一个错误。我将尝试一下你的一些建议,然后可能只是重新创建表单。似乎需要更多的时间来尝试并继续解决这个问题,然后再创建一个新的问题。谢谢您的回复。我确实尝试过对数据库进行反编译,完成后我将其压缩并修复。它没有解决问题,但我不能确定我是否正确地遵循了这些步骤。我知道这是旧的,但您的数据库是否一次读取一个文件,强制您分别加载每个文件?还是它同时读取了全部100个?