Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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
Sql server 如何将ListObject源从静态数据更改为SQL Server数据库?_Sql Server_Database_Excel_Vba - Fatal编程技术网

Sql server 如何将ListObject源从静态数据更改为SQL Server数据库?

Sql server 如何将ListObject源从静态数据更改为SQL Server数据库?,sql-server,database,excel,vba,Sql Server,Database,Excel,Vba,现在,我正在使用ADODB将数据从数据库下载到Excel表中。但是,我希望用户能够刷新该表,以便从我的数据库更新该表 我一直在尝试从外部源创建一个新表,并获得了以下代码: Public Sub CreateLiveTable(sql As String, Location As Range, TableName As String) With Location.Parent.ListObjects.Add(SourceType:=xlSrcExternal, Source:="OLEDB

现在,我正在使用ADODB将数据从数据库下载到Excel表中。但是,我希望用户能够刷新该表,以便从我的数据库更新该表

我一直在尝试从外部源创建一个新表,并获得了以下代码:

Public Sub CreateLiveTable(sql As String, Location As Range, TableName As String)
    With Location.Parent.ListObjects.Add(SourceType:=xlSrcExternal, Source:="OLEDB; " & DB_CONNECTION, Destination:=Location).QueryTable
        .CommandType = xlCmdSql
        .CommandText = sql
        .BackgroundQuery = True
        .ListObject.DisplayName = "asdfas"
        .SourceConnectionFile = "C:\Users\lisandro.h.vaccaro\Documents\My Data Sources\172.19.179.43 Forecasting CostRates.odc"
        .Refresh BackgroundQuery:=True
    End With
End Sub
但是,我无法将现有表连接到SQL Server。我不能只是删除并再次创建它,因为有很多公式和命名范围指向它,如果我删除它,这些公式和命名范围将被破坏


如何将现有表连接到数据库?

这是一个很好的问题。我记得过去曾试图找到一种方法来做这件事,但没有找到一种方法。搜索网络不会产生任何结果,所以我认为这可能是不可能的。也许您可以通过添加撇号将所有公式转换为文本,删除现有表,创建一个新表(使用相同的名称),然后重新打开公式。我曾考虑过关闭所有公式,但这不会阻止命名范围中断,我看不出任何方法可以关闭所有这些。你可以用双引号将整个名称定义括起来。我不是说这些都是好主意,提醒你,只是我能想到的最好的主意。这是一个好问题。我记得过去曾试图找到一种方法来做这件事,但没有找到一种方法。搜索网络不会产生任何结果,所以我认为这可能是不可能的。也许您可以通过添加撇号将所有公式转换为文本,删除现有表,创建一个新表(使用相同的名称),然后重新打开公式。我曾考虑过关闭所有公式,但这不会阻止命名范围中断,我看不出任何方法可以关闭所有这些。你可以用双引号将整个名称定义括起来。我不是说这些都是好主意,提醒你,只是我能想出的最好的主意。