将excel链接到访问时,添加到表的超链接

时间:2014-04-14 20:58:23

标签: ms-access ms-access-2007 access-vba

我有一个函数可以成功从不同位置的多个excel文件中获取数据,并将它们全部合并到一个访问表中。

Dim rst As New ADODB.Recordset
rst.Open "Files", CurrentProject.Connection
rst.MoveFirst
Do While Not rst.EOF
MsgBox rst.Fields("Filelist")    
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "MechanicalData", rst.Fields("Filelist"), True    


Dim rstmech As New ADODB.Recordset
rstmech.Open "MechanicalData", CurrentProject.Connection
rstmech.MoveFirst
Do While Not rstmech.EOF
    If IsNull(rstmech.Fields("FolderPath")) Then
        rstmech.Fields("FolderPath") = rst.Fields("Filelist")    'Error 3251 here
        rstmech.Update
        End If
        rstmech.MoveNext
Loop
        rstmech.Close
        Set rstmech = Nothing

rst.MoveNext
Loop
rst.Close
Set rst = Nothing

我想为新表中的每一行添加一个具有正确超链接的字段,以便用户能够导航回excel文件。这样做有快速而肮脏的方法吗?我知道我可能会在DoCmd.TransferSpreadSheet子句下抛出一个嵌套循环,但我不知道如何将其编入索引。

我已经使用嵌套的while循环更新了我的代码,该循环应该遍历新表中的每一行并添加适当的链接。我收到了错误:

Run-Time error '3251':
Current Recordset does not support updating. 
This may be a limitation of the provider, or of the selected locktype. 

关于如何解决此问题的任何想法?

替代方法,可能更快的方法:上面的外部循环当前将数据添加到底部,因此如果在每次迭代结束时将链接添加到每个记录,我可以让它仅将链接添加到该字段中的空条目,基本上每个超链接做一批。有点像:

UPDATE [MechanicalData] SET [MechanicalData].OpenFile = rst.Fields("Filelist")
WHERE [MechanicalData].OpenFile Is Null

显然我不能按原样运行该代码,但我不确定从那里开始。

1 个答案:

答案 0 :(得分:0)

我会使用您可以输入的参数构建一个更新查询。在代码中循环的每次迭代上执行。这个讨论可能是针对您使用的旧版本,但我认为提出的观点可能很有用:http://www.utteraccess.com/forum/modify-hyperlink-addre-t1927596.html