Sql Excel如何在当前工作簿上定义连接

Sql Excel如何在当前工作簿上定义连接,sql,excel,microsoft-query,Sql,Excel,Microsoft Query,我正在尝试在Excel中运行SQL查询 唯一允许我这样做的选项是使用Microsoft Query从外部源插入数据,选择Excel文件作为数据源,并指向当前工作簿 虽然它很愚蠢,但它确实可以工作,但是它会将文件路径烧入它在工作簿中定义的连接中,这意味着我无法移动或重新分发文件 该连接将具有以下定义: 连接字符串: 查询: 正如您所看到的,在上述两个文件中都有一个路径C:\Temp\Alma.xlsx。我想摆脱它。我如何在工作簿本身、运行实例上建立连接点,而不管它在哪里 如果有任何其他方式原生Ex

我正在尝试在Excel中运行SQL查询

唯一允许我这样做的选项是使用Microsoft Query从外部源插入数据,选择Excel文件作为数据源,并指向当前工作簿

虽然它很愚蠢,但它确实可以工作,但是它会将文件路径烧入它在工作簿中定义的连接中,这意味着我无法移动或重新分发文件

该连接将具有以下定义:

连接字符串:

查询:

正如您所看到的,在上述两个文件中都有一个路径C:\Temp\Alma.xlsx。我想摆脱它。我如何在工作簿本身、运行实例上建立连接点,而不管它在哪里


如果有任何其他方式原生Excel,没有插件!要在工作簿的表上运行SQL查询,我也很乐意这样做。我尝试过使用MS Power Query,但据我所知,它完全没有用。

p.s:是的,我知道查询很愚蠢,相信我,源数据也是……一种选择可能是将源数据放在单独的工作簿中,并将其放在可访问的位置。否则,当文件打开时,您需要编写一些VBA来更新连接。遗憾的是,这样做行不通,他们只是想把这个Excel文件扔掉,然后使用临时设置。无法创建集中式数据源。然而,VBA的想法听起来是可行的,尽管我不知道从哪里开始/
DSN=Excel Files;DBQ=C:\Temp\Alma.xlsx;DefaultDir=C:\Temp;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;
select e.bizszam, e.bevsor, e.afa, u.afa
from this.EredetiAdat e
inner join this.UjAdat u on e.bizszam = u.bizszam and e.bevsor = u.bevsor and e.afa <> u.afa
where e.afa NOT IN (select u2.afa from `C:\Temp\Alma.xlsx`.UjAdat u2 where u2.bizszam = u.bizszam and u2.bevsor = u.bevsor)
OR u.afa NOT IN (select e2.afa from `C:\Temp\Alma.xlsx`.EredetiAdat e2 where e2.bizszam = e.bizszam and e2.bevsor = e.bevsor)