(已解决) 集算器返回当前打开脚本的路径
大佬们,集算器有没有办法返回当前打开的 splx 脚本的路径?
比如,在 IDE 中打开了一个 splx 文件,双击打开也好,或者通过 IDE 左侧面板搜索打开也好,总之是打开了一个脚本文件。如果事先约定好所有脚本文件或者相关数据源都是放在主路径下的,那很简单,反正知道是在主路径下面,spl 也有相应的返回主路径的函数 filename@p() 就能返回主路径。那也有不按照约定,随意存放文件的,这样的话有没有函数能返回这个当前打开的 splx 脚本的路径?
举个例子,在 Excel 中,可以有两种方式实现当前打开工作簿的路径:
1、函数方法:=CELL(“filename”) 返回当前文件所在的路径,如下所示:
2、VBA 方法:ThisWorkbook.Path 或者 ThisWorkbook.FullName
上述两种方法方便的地方是不用事先知道路径,只要按关键词就可以得到结果。
集算器里虽然有 directory 函数和 filename 函数,但必须先知道路径,或者返回的是设定好的主路径。还有一个 jvm 函数,返回的是一些环境变量属性和系统变量属性。所以,我就琢磨集算器是不是也能实现类似 ThisWorkbook.Path 这样的功能?
这个功能用在哪里? 比如,我写了 splx 脚本和数据源一起打包发给其他人使用时,要更改数据源的路径,或者把数据源放到对方设定好的主路径下,才能正常使用。主要是图方便,不用改路径,不用移动文件,增加使用时的便利性。有些操作,对职业编程人员来说是易如反掌的事,但对非职业编程人员来说可能是无法趟过去的河。就像官方最近更改了社区版的安装方式,从 exe 安装变成了 zip 安装包配置,本来双击一下就能完成的事,属于没有门槛的无脑操作,现在那个 zip 安装包很多小白都装不明白😂。话多整岔劈了,抱歉。
以上返回打开文件路径的功能,恳请大佬们得闲时看看有没有现成的变通的方法?
两种场景:
1、IDE 中打开一个 splx 脚本返回该脚本的路径;
2、桌面版插件是在 Excel 工作簿中写 spl 语句,是否能返回该工作簿所在的路径?
谢谢!
1、filename 函数增加了 @s 选项用于取脚本文件名,取路径的话用 filename@sd()
2、集算器插件无法得到 excel 文件所在路径,这个能否在 excel 中取到传给集算器?
函数 filename() 中增加了 @s 选项用于获取当前脚本文件名称,程序已更新,请前往下载贴中下载最新的 esproc-bin.jar 文件。
@leavedy @ddszm 谢谢大佬🙏
@oradt
大佬,桌面版插件在 EXCEL 里写 spl 语句时有纯粹的 spl 办法得到当前工作簿的路径吗?除了外部传入参数的方法。
SPL 就不知道自己在被谁调用,只有上层的 VBA 才能取到。
如果不是你显式传,就是 SPL XLL 偷偷地传,但用到这信息的场景不到 0.1%,每次都偷偷传一下显然有点浪费了。
😄谢谢大神成全返回当前脚本路径🙏
至于在桌面版插件里,若能实现,想着能偷偷传一下也是好的😂 我还想着运行 spl 的时候能跳出对话框让用户自己选择文件夹😂
说正经的哈,在 excel 里返回当前文件的路径除了函数的 CELL(“filename”) 和 VBA 里的 ThisWorkbook.Path,在微软自己的 Power Query 里也没有返回当前工作文件路径的直接方法,导致每一次发 PQ 给别人用,或者用别人发过来的 PQ 时,都要手动去改数据源的路径,这是一个很麻烦的事。目前在 Power Query 里的变通方法就是用函数 Cell(“filename”) 生成路径,然后把这个单元格值作为数据源加载进 Power Query 里处理成文件所在的目录再去做后续的操作,变相实现了动态路径,这样文件发给谁用都不需要再去修改路径了,也算提供了便利。但这样的做法,终究不是妥善之道,我琢磨着微软迟早也会考虑这个路径的问题。就像 EXCEL 里函数用正则,那么多年没有正则,微软最近还是加了 3 个正则函数:REGEXEXTRACT,REGEXREPLACE 和 REGEXTEST。从用户的角度来说,其实有些东西不是刚需,就是为了能在用到的时候有得用,图方便。很多人脾气很烦躁的,三下两下搞不好,直接卸载弃用。PQ 我也放弃使用了,效率太低了,跟 SPL 不是一个级别 的。