Excel公式批量导入导出

动作需求 · 1663 次浏览
fantasynew 创建于 2022-04-21 17:37

Excel新的lambda函数非常强大,很多场合可以丢掉VBA了。

但是又有一个新的问题,名称管理器里没有公式批量导入导出。

或者说可以导出,但是没办法导入。

网上看到大神的解决方案,详见链接方法二。

https://zhuanlan.zhihu.com/p/337982213

有没有大神可以把这个打包成quicker动作呢?


回复内容
CL 2022-04-21 18:19
#1

不太懂excel,有没有例子文档,我用npoi模块试试能不能读取到。

fantasynew 回复 CL 2022-04-21 18:47 :

感谢,查了微软有对应的类,超出我能力范围了,不知如何调用。

https://docs.microsoft.com/zh-cn/dotnet/api/documentformat.openxml.office2010.excel.definednames?redirectedfrom=MSDN&view=openxml-2.8.1

fantasynew 回复 CL 2022-04-21 18:50 :

还有openpyxl里有workbook.defined_names方法,但是需要调用Python,更麻烦了。

https://blog.csdn.net/qq_51865683/article/details/123761383

现在看来如果能直接调用微软类库,应该是最好的解决方案

fantasynew 回复 CL 2022-04-21 19:05 :

查了资料,npoi有封装该api。

详见https://github.com/nissl-lab/npoi/blob/master/OpenXmlFormats/Spreadsheet/Workbook/CT_DefinedNames.cs

要求更新了Thanks♪(・ω・)ノ

CL 回复 fantasynew 2022-04-21 19:17 :

如果有带这个东东的excel文件,可以发我一个 197906@qq.com,我看看读取到的是啥内容。

fantasynew 回复 CL 2022-04-21 19:21 :

看我最后一个回复,同样内容直接回复你,提交按钮就不见了,只能新开一楼

fantasynew 回复 CL 2022-04-21 19:23 :

读取出来的结果应该是

立方 =LAMBDA(x,x^3)
平方 =LAMBDA(x,x*x)
平方根 =LAMBDA(x,x^0.5)
fantasynew 2022-04-21 19:20
#2

「test.xlsx」https://www.aliyundrive.com/s/iFB4gFieXRV

写了一个带lambda函数的Excel文档,需要用office 365才能运行公式。到office 2021为止还没这个函数

CL 回复 fantasynew 2022-04-21 20:34 :

收到,我等试一下。

fantasynew 回复 CL 2022-04-25 20:47 :

试验有进展吗

CL 回复 fantasynew 2022-04-25 20:48 :

这几天在重写拼音筛选算法,有些卡住了😂 

CL 回复 fantasynew 2022-04-25 23:06 :

尝试失败,目前创建name会报错,已经提交了issue,等npoi的大佬看看了。

fantasynew 回复 CL 2022-04-26 07:32 :
提取没问题吧?这个如果能做成Excel插件就太强大了,目前没有软件能实现这个功能,具备不可替代性。觉得都可以拿来宣传quicker了
CL 回复 fantasynew 2022-04-26 07:36 :

提取可以,已经加上等下一版更新。

Cesar 2022-04-26 21:05
#3

先使用动作 导出名称 将名称导出到剪贴板,然后使用 导入名称 动作将剪贴板里的名称导入进去

试一试

Cesar 最后更新于 2022-04-26 21:05
CL 回复 Cesar 2022-04-26 21:26 :

测试可以

fantasynew 回复 Cesar 2022-04-27 02:21 :

大神,测试导出的公式中文名称是空白,导入不成功。

Cesar 回复 fantasynew 2022-04-27 08:28 :

我用你上面给的文件测试没问题

fantasynew 回复 Cesar 2022-04-27 13:03 :

动作执行成功,文件内容不对,我也不知道问题出在哪里

Cesar 回复 fantasynew 2022-04-27 13:53 :

看看你导出来的东西

fantasynew 回复 Cesar 2022-04-27 21:17 :

怪了,早上试的时候还能导出自定义函数,就是中文函数名不见了。现在怎么试都是错误

fantasynew 最后更新于 2022-04-27 21:18
Cesar 回复 fantasynew 2022-04-28 15:24 :

你是不是没有打开文件

fantasynew 回复 Cesar 2022-04-28 20:56 :

明白了,我一直以为是在资源管理器里选定文件再运行动作,结果不是。

之前误打误撞运行成功是因为打开的另一个表格有个同名函数

fantasynew 回复 Cesar 2022-04-29 21:29 :

感谢大神出手相助,测试没问题

湘喑 2022-04-27 17:06
#4

我用的WPS,打开LZ的文件识别不了公式,你把下面的代码复制到VBE然后测试下,结果正确按道理就能正常导出的

Sub ceshi()

Dim n As Name

For Each n In ActiveWorkbook.Names

  MsgBox n.NameLocal & n.Value

Next

End Sub

fantasynew 回复 湘喑 2022-04-27 21:14 :

这是office 365引入的新函数,WPS不支持的

fantasynew 回复 湘喑 2022-04-27 21:21 :

谢谢你的解答,本问题最初目的为了抛开VBA

回复主贴