普通视图

回滚office

2025年12月18日 09:07

用之前的文件做测试以后,其实我已经基本锁定这一次ADO+SQL查询失败的原因。我个人猜测是因为进行了某项封堵,只允许指针到达的那个地方进行数据格式化查询,另外那个用绝对地址引用的东西没办法转化为同样的数据库。这个现象只是从我的电脑里面发现的,我不知道其他人是不是也这样。我的那个测试文件刚好对数据源进行了各种各样的枚举,所以刚好碰巧可以用来测试。如果有人在6种情况下都可以顺利运行,基本确定他的office是不受这一次升级影响。非常有可能他一直停留在某个版本没有升级,也可能他使用的不是当前频道,而是批量版的长期频道或者beta频道。因为我的电脑用的都是当前频道,所以我需要大家一起来测试不同频道是不是同样存在这个问题。我用的是Microsoft 365其它版本的office,比如2021、2024或者2019会不会也受到影响?我个人感觉可能2019没有受到影响,因为和win10一样,在2025-10-14开始就已经停止支持,但因为我的win10在11月依然进行了两个升级,所以2019会不会也受到波及我觉得有点难说。

帖子发布了一天之后,终于迎来了大佬的关注。可能大佬正在使用的那个电脑也受到了这个的影响,而他的电脑又或者他使用的office可能不仅仅是一个版本,所以他可以明确指出某个版本的office不行,但是某个版本可以。他的解决方案是要不等待微软更新解决这个bug,要不重装回旧的那个版本。哪个版本可以他也已经说出来了,装回那个旧的版本以后你还得禁止自动更新,否则还是不行。装回旧的版本我感觉是一定可以解决问题的,但是要怎么装回旧的那个版本呢?登录微软的账号,365那里的确有离线安装包,但是下载安装得花费很多时间,而且那里只会给你提供最新的版本,除非之前就已经把旧版本的离线安装包存下来,否则几乎无解。

大佬都这样说,意味着这一次的bug估计不是修改某个注册表就能解决的。几个月前的那个bug,如果把VBA的文件从xlsm降级为xls,也就是2003版本的那种Excel文件,就能避免查询时间很长的问题。如果只是一个查询文件,降级没有问题,但如果那个文件里面带有大量的格式,这样的降级就会让那个文件面目全非。这一次我也尝试过把xlsm文件降级为xls,没有效果。

之前我从未试过把office降级,但是我曾经试过卸载windows的更新文件。在控制面板里就可以卸载windows的部分更新文件,但office的在哪里呢?显然不在那个位置,于是我就去搜索如何把office回滚到旧的版本,结果出乎意料原来如此简单。

打开office任意软件-文件-帐户-更新选项-禁止更新
windows搜索cmd,管理员模式打开
粘贴
cd %programfiles%\Common Files\Microsoft Shared\ClickToRun\
回车
粘贴
officec2rclient.exe /update user updatetoversion=16.0.19328.20244
回车
等待

16.0.19328.20244是Microsoft 365当前频道的版本,回滚后SQL跨表查询恢复正常。更多office版本请搜索微软官网。

365更新版本的官方链接是:https://learn.microsoft.com/zh-cn/officeupdates/update-history-microsoft365-apps-by-date
更多版本的做法请看:https://www.bilibili.com/opus/1136898381847724034

一波操作后就可以了。我选的时候2510的大版本,让我出状况的是2511版本,在我印象之中,北京时间2025-12-14之前我一直没有问题,而让我出问题的那个2511是属于大版本里面的第2个版本。我选择跳过了2511的第1个版本,为的是更稳妥一些。当我把2510,19328.20244装回去以后。点击查询,VBA正常了,接着我赶紧把这个方法让同事也操作一遍。因为SQL的跨表查询无法进行将严重影响我们的工作。试验证明她的电脑也没有问题了,我们两个的版本都是365。

之后我赶紧回到ExcelHome论坛,把这个简单的回滚方式分享给大家,跟卸载office重新安装比起来这个回滚简单很多,速度也很快,只要你的网速靠谱。因为我感觉其实对office来说,它内部就是卸载了一个补丁,然后再填补一些东西,而并不需要整个office都翻新。单位的网络是很神经,但从开始回滚到结束,大概花了不到20分钟。最长的时间都用在了下载上面,安装很迅速,安装完成以后。365的激活是正常的,我的账号是正常的,也就是说直接开箱使用。查看版本就可以发现已经从2511退回到2510。

本来我的办公电脑是win10,没办法继续更新下去,我觉得让365停止在一个合适好用的版本是一个比较安全的做法。

当个吹哨人

2025年12月17日 08:38

到底是什么原因导致了这个ADO+SQL查询一夜之间就失败呢?首先我把这个错误代码和错误描述拿去搜索,无论是bing还是百度,历史网页都没有太多有价值的信息,同时我也搜索了24小时之内的结果。两个搜索引擎都没有找到些什么,也就是说发现这个问题的人估计还不多。奇怪的是,当我用国际版的bing的时候,发现居然没办法限制搜索结果为24小时内。不知道如果用Google会有什么效果,但显然在上班时间我不想冒那个风险用Google。

搜索没办法得到结果,我就去ExcelHome的论坛VBA板块看一下,果然也是没有人发帖,我觉得如果有人在那里发帖了,搜索引擎估计能捕捉到,但显然没有,于是我就当了吹哨人。一开始我就把已经发现的情况描述出来,比如是什么时候开始发现不行的,有什么错误代码有什么错误描述。

一开始我的帖子就只有那些东西,但之后我又拿出了几个月前用来测试文件打开的时候查询很慢的那个文件,把所有选项都点了一遍,结果发现6个选项里面只有2个选项可以完成查询,其余的那些都不行。对比成功查询的那两个,发现里面其实我只做了一个cnn的指向。其它实际上用的是两个数据源,虽然最后输出的数据可能只是指向其中一个。这个情况很尴尬,意味着用经典传统写法的cnn是可以正常查询的,无论数据源在查询文件里面还是在外部,无论那个文件是关闭的还是打开的。之所以要用ADO+SQL,就是为了可以方便快速地跨文件查询。现在这个指针只能是一个,以前除了指针那个以外的其它可以用绝对地址引用到达,现在那些用绝对地址引用的好像都不行了。遇到这个情况我很绝望,这就意味着我的那些查询文件一夜之间几乎全部都失效了。如果只是一个文件,那还好,但显然我绝大多数的查询都是跨表的,也正是因为有跨表这个功能,才让它们有价值。偏偏微软不知道进行了什么更新,把这个给废掉了,我不知道他们什么时候才能修复这个bug,但我觉得没有半个月估计搞不定。因为首先他们得意识到有这个bug,然后才着手去研究是什么更新导致了这个bug。马上就年底了,各种各样的数据报送要求接踵而至,在这个节骨眼上你给我干出这种bug,我实在非常无语。

发现了这个只要跨文件就失效的问题以后我马上又去论坛那里补充更新。补充更新过了一段时间以后,我就发现有人回帖了。他的状况跟我一样,无端端那些联合查询失效了,他用的不是Excel,他是用Access,也就是全套office的这个用法都撞墙了。

有人说不行,也有人说他没事,仔细看他们的那个office,我感觉没挂的那个用的是beta频道,而我们这些挂了的人我感觉是用零售版的当前频道。批量版的长期更新估计还没有状况,因为他们要过上很长一段时间才会有更新,相对于零售版的更新来说,那些批量版的更新会稳定一些。之所以要发帖,是因为我要看一下到底有多少人和我一样的,我知道论坛里面有大佬,他们遇事比我多,他们可能会想到一些我想不到的解决办法。我不知道他们有没有遇到这种问题,有可能他们没遇到,因为即便装的是零售版,他们通常会禁止更新,更多的可能是他们用的是批量版。但因为他们是热心的大佬,看到小菜鸟在那里求助,他们不会坐视不管,这样的话,我们这些中招的人离得救就不远了。

要解决专业的问题,得去专业的地方吸引专业的人。

❌