Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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
Ms access 间歇性访问错误3420“;对象无效或不再设置。”;_Ms Access_Vba_Ms Office - Fatal编程技术网

Ms access 间歇性访问错误3420“;对象无效或不再设置。”;

Ms access 间歇性访问错误3420“;对象无效或不再设置。”;,ms-access,vba,ms-office,Ms Access,Vba,Ms Office,任何人都可以告诉我,我的代码哪里出了问题,从10次改为3次,问题在哪里 程序导入Excel文件,在插入新行后删除第一行和第二行,编辑行和输入框后的名称,但我认为问题出在这里 DoCmd.transfer电子表格导入,acSpreadsheetTypeExcel9,“ps”, 伊米达蒂纳姆,真的 Private子命令50_Click() DoCmd.SetWarnings错误 常量msoFileDialogFilePicker的长度=1 设置fDialog=Application.FileDial

任何人都可以告诉我,我的代码哪里出了问题,从10次改为3次,问题在哪里 程序导入Excel文件,在插入新行后删除第一行和第二行,编辑行和输入框后的名称,但我认为问题出在这里


DoCmd.transfer电子表格导入,acSpreadsheetTypeExcel9,“ps”, 伊米达蒂纳姆,真的

Private子命令50_Click()
DoCmd.SetWarnings错误
常量msoFileDialogFilePicker的长度=1
设置fDialog=Application.FileDialog(msoFileDialogFilePicker)
Dim selectedFilter作为字符串
作为字符串的Dim imyDateiname
用fDialog
.AllowMultiSelect=False
.过滤器
.Filters.Add“Excel”,“*.xlsx”,1
显示
如果.SelectedItems.Count=0,则
imyDateiname=“”
其他的
imyDateiname=Dir(.SelectedItems(1))
如果结束
selectedFilter=.FilterIndex
以
如果imyDateiname“”那么
Dim oExc作为新的Excel.应用程序
使用oExc
.Workbooks.Open“C:\Users\”和环境(“用户名”)\
&“\Desktop\”&imyDateiname
.行(“1:2”)。删除
.行(“1:2”).EntireRow.Insert
.工作表(“ps”)。栏(“B”)。替换_
内容:=“-”,替换:=”_
SearchOrder:=xlByColumns,MatchCase:=True
以
使用oExc
单元格(1,1).Value2=“Ebene”
单元格(1,2).Value2=“OrgEinheit”
单元格(1,3)。Value2=“滴度”
单元格(1,4).Value2=“PersNr”
单元格(1,5).Value2=“Geburtsdatum”
单元格(1,6).Value2=“eintrittsdatam”
单元格(1,7).Value2=“Befristungs”
单元格(1,8).Value2=“beginnater”
单元格(1,9).Value2=“Beginnfrei”
单元格(1,10).Value2=“WK2”
单元格(1,11)。值2=“WT”
单元格(1,12).Value2=“Kostenstelle”
单元格(1,13).Value2=“Schlüssel”
单元格(1,14).Value2=“Tätigkeitsbezeichnung”
单元格(1,15).Value2=“IRWAZ”
单元格(1,16).Value2=“IstAK”
单元格(1,17).Value2=“BelGrp”
.ActiveWorkbook.SaveAs“C:\Users\”和环境(“用户名”)_
&“\Desktop\”&imyDateiname
退出
以

DoCmd.transfer电子表格导入,acSpreadsheetTypeExcel9_ “ps”,我的名字,是真的 作为字符串的Dim str str=输入框(“请插入月份编号”) 执行“upd\U TPS\U Monat”,str 我,刷新一下 MsgBox“完成您的数据准备就绪!” 如果结束 端接头**
您应该首先关闭/退出Excel对象,然后将其设置为nothing

Set oExc = Nothing
请看

Excel对象可能仍然保留该文件,将该对象设置为Nothing可增强垃圾收集,witch将释放该文件,并允许Access导入其内容。 编辑:请参阅


如果没有其他问题,这行代码将添加一些纳秒,并让导入运行时不会出现错误

re:“我认为问题就在这里”——我们需要知道的第一件事是,到底哪一条语句失败了。错误发生后,单击“调试”时,
DoCmd.TransferSpreadsheet
语句是否突出显示?单击“调试”时,是的,它会给我一条黄线hereDoCmd.TransferSpreadsheet acImport,acSpreadsheetTypeExcel9,“ps”,imyDateiname,true再次查看代码,变量
imyDateiname
只包含文件名,不包含路径。因此,您的
TransferSpreadsheet
依赖于Access,它的“当前目录”位于存储文件的路径上。这也可能造成问题。您应该提供完整的文件path.ist,该文件现在运行得更好,但我仍然有新的错误462,远程服务器计算机不存在或不可用,并且我也遇到了错误3274外部表不符合预期格式一些建议:如果您只想在Access中管理字段名,请使用HasFieldNames参数=False导入数据,然后使用“TableDefs(“ps”).Fileds(FiledOrdinalNumber).Name=strFiledName”来管理Access中的字段名。FiledOrdinalNumber应该是代码中的列号。这应该是
设置oExc=Nothing
。第一个链接出现问题。谢谢,Andre,我修复了答案。ist现在工作得更好了,但我有新的错误462,远程服务器计算机不存在或不可用,我也收到错误3274外部表不在预期格式中。对于错误462,这就是为什么我倾向于避免使用Excel对象。。。你如何看待我在前面评论中的建议?如果要在Access中管理字段名,为什么不从Access中管理它们?