在使用VBA访问中创建多个链接表



所以我当前有此代码

Public Sub DoTrans()
   Set cn = CreateObject("ADODB.Connection")
   dbPath = Application.ActiveWorkbook.Path & "db1.accdb"
   dbWb = Application.ActiveWorkbook.FullName
   dbWs = Application.ActiveSheet.Name
   scn = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & dbPath
   dsh = "[" & Application.ActiveSheet.Name & "$]" & "namedrange1"
   cn.Open scn
   ssql = "INSERT INTO Table1 ([fdName], [fdOne], [fdTwo]) "
   ssql = ssql & "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh
   cn.Execute ssql
End Sub

但这将插入现有的访问表中。我希望能够根据我在Excel中拥有的命名范围的列表来修改以创建链接表,以便将所有命名范围转换为访问中的表。格式不是问题,因为我知道命名范围的格式可以用作访问中的表。

有没有办法轻松执行此操作?

INSERT INTO附加在现有表上, SELECT .... INTO创建了新的表。

如果要将该查询重写为 SELECT INTO,那将是如此简单:

ssql = "SELECT * INTO Table1  "
ssql = ssql & "FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh

请注意,如果要覆盖它,则首先需要删除表。

您的问题有几个子问题。我可以在特定列上的ADO中创建链接,但是您尚未显示尝试,也没有共享足够的信息来编写适用的答案。

详细说明Transferspreadsheet方法的样本:

dim snt作为字符串,swb为字符串,srn as string 
snt =" table1"
swb =" c: myworkbook.xls"
srn =" nasurerange1"
docmd.transfersferspreadsheetAclink,SNT,SWB,True,SRN

这必须在MS-Access的模块中运行。

相关内容

  • 没有找到相关文章

最新更新