从Excel文件导入数据,使文件不会被其他用户锁定
我有一个链接数据库到我的前端访问 此Excel电子表格更新非常频繁,每当用户打开前端时,它也会在另一个窗口中打开链接的Excel电子表格,从而防止任何其他人尝试使用该链接的电子表格 我试着想出两种不同的解决方案,但都没有成功 方法1: 每次打开表单时,使用VBA通过本地目录中的下一行创建Excel文件的副本从Excel文件导入数据,使文件不会被其他用户锁定,excel,ms-access,vba,Excel,Ms Access,Vba,我有一个链接数据库到我的前端访问 此Excel电子表格更新非常频繁,每当用户打开前端时,它也会在另一个窗口中打开链接的Excel电子表格,从而防止任何其他人尝试使用该链接的电子表格 我试着想出两种不同的解决方案,但都没有成功 方法1: 每次打开表单时,使用VBA通过本地目录中的下一行创建Excel文件的副本 Private Sub Form_Load() FileCopy "\\calfs01\LOCATION_A\FILE.xlsx", _ "\\calfs01\LOCAT
Private Sub Form_Load()
FileCopy "\\calfs01\LOCATION_A\FILE.xlsx", _
"\\calfs01\LOCATION_B\FILE.xlsx"
End Sub
我收到一条错误消息,表明我没有复制它所需的权限。但是,我有访问此文件的权限,因为我可以手动执行此操作
方法2:
不要链接Excel电子表格,而是根据Excel电子表格中的数据创建一个新表格,并让它在表单_Load()上更新表格。最后,我无法实现这一步,不幸的是,我丢失了它的代码使用自动化流程的问题是Excel电子表格的前两行是标题,我不知道如何解决这个问题 方法3: 使用批处理文件复制Excel文件,但是该文件位于网络驱动器上,并且(如果我错了,请更正)无法从网络驱动器复制 我这里的主要问题是,执行以下步骤的最佳方法是什么?
在我看来,到目前为止最好的方法是方法2。不幸的是你丢失了密码,所以我说不出你哪里出错了 有很多方法可以将数据从Excel文件导入Access。如果因为有多个标题而遇到问题,可以先导入,然后再轻松导入所需内容 导入的一种简单方法是使用查询(假定命名范围的第一行包含标题:
CurrentDb.Execute“从“\\calfs01\LOCATION\u A\FILE.xlsx”[Excel 12.0 Xml;]中的[MyNamedRange]中选择*到MyTemporary表中;
或者,使用DoCmd.TransferDatabase
CurrentDb.Execute "DELETE * FROM MyTemporaryTable" 'First, empty the table
DoCmd.TransferSpreadsheet acImport,acSpreadsheetTypeExcel12Xml, "C", "\\calfs01\LOCATION_A\FILE.xlsx", True, "MyNamedRange"
如果您的范围大小不断变化,这会有点困难,但肯定是可能的。因此,如果我使用方法2,您有什么可以作为参考来帮助我使用此方法吗?某种教程?此外,在导入此方法时,是否可以使用此过程更改每个列的名称?共有181列s、 我不介意为代码一次手动执行1次,只要这是一次性的,并且不需要每次使用方法2的两种方法打开数据库时都执行,您实际上可以声明列名(第一种方法类似于从etc中选择F1作为ColumnA,F2作为Column2等,第二种方法插入到现有表中并使用其列名)。我没有教程(你可以阅读官方文档,只写了这两种方法。不过,我在我的答案中链接了命名范围的快速指南。