我搜索了文档Office Excel API,但根本找不到任何提及,它是如何实现的。
问题:
幸运的 API 功能或某种错误可以通过 VBA 宏轻松解决。
但是,要做到这一点,我们只有两种可能性:
手动将宏插入到工作表中,这将在工作表上捕获一些事件,并且来自插件的 JS 将触发该事件(此解决方案来自非常古老的论坛(如果我能找到链接,我将在此处插入))。
在插件运行时通过JS代码插入宏到工作表(context.workbook.worksheet?),甚至它也不能被插件执行,但在这种情况下,最终用户根本不需要管理宏——我们可以进行宏的处理使用相同的逻辑运行更流畅(JS 将宏插入工作表中,更改工作表中的一些值,然后触发一些宏,然后(例如在 JS 中超时或仅通过 JS 中的另一个事件我们可以轻松删除整个带有此宏的工作表))。
所以问题是,是否有可能以某种方式使用 Excel API 制作类似于解决方案 2 的东西?(从插件插入/删除VBA代码的某种功能)
我将不胜感激任何帮助!
说明问题的例子
我正在使用 JavaScript API,但不幸的是,该 API 并没有涵盖 VBA 中已经存在的全部功能(我希望还没有)。让我用一个简单的例子来解释它:
想象一个任务:
我们需要从工作簿 1 的工作表 1 中复制一些信息
然后我们需要创建一本书并将值放入新工作簿 2
然后我们需要向用户建议需要保存它(新工作簿 2)的位置。
然后我们需要保存并关闭工作簿 2。
VBA 很容易解决这个问题,但在 JS API 的情况下 - 这个问题没有完整的解决方案(没有第三方应用程序)。
您可以通过以下链接比较 API JS 和 VBA:
所以我想要做的 - 是在 JavaScript 中编写实际的 VBA 宏并将这个 VBA 宏插入到工作表中以使宏可执行。
如何通过工作表上的某些值更改使宏可执行?
我发现,如果您调用select方法直接应用于单元格并Worksheet_SelectionChange …
问题:
一些 pub 包还不支持空安全。
例如intl_translation无法解析具有空安全运算符的文件,并且如果找到任何符号(如 ?、! 等),则会抛出如下错误。
Invalid argument(s): Parsing errors in lib/localizations/MainLocalizations.dart
#0 MessageExtraction._parseCompilationUnit (package:intl_translation/extract_messages.dart:117:7)
#1 MessageExtraction.parseContent (package:intl_translation/extract_messages.dart:102:14)
#2 MessageExtraction.parseFile (package:intl_translation/extract_messages.dart:87:12)
#3 main (file:///.../flutter/.pub-cache/hosted/pub.dartlang.org/intl_translation-0.17.10+1/bin/extract_to_arb.dart:98:31)
#4 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:281:32)
#5 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)
Run Code Online (Sandbox Code Playgroud)
然后它生成不使用空安全的 dart 文件,并在$ flutter run.
那么有没有办法至少为成功编译禁用警告或空安全?因为
$ flutter run --no-sound-null-safety没有帮助:(
感谢您的任何帮助!