我有一个.ods文件,其中包含许多必须自动更新的链接。据我所知,使用宏或libreoffice命令参数没有简单的方法,所以我试图在打开文件时更新所有链接,然后保存文件并退出。
所有链接都是DDE链接,应该能够自动更新(并设置为在编辑>链接中执行此操作),我也在工具>中启用了此功能。选项> Calc>一般>打开时始终更新链接,以及工具>选项> Calc>配方>总是重新计算。 但是,我仍然会在弹出时提示手动更新链接,如果我没有选择更新,链接将不会是最新的。我需要这些DDE链接自动更新,为什么不是这有用吗?
如果那里没有解决方案,我也愿意尝试通过Python更新链接。 Uno是否会与libreoffice合作完成此操作,而不会像openpyxl那样破坏文件中的任何预先存在的图形?
答案 0 :(得分:0)
API没有提供在打开文件时禁止提示的方法!
我尝试运行StarBasic代码来更新“文档打开”事件上的DDE链接,但问题不断出现。
所以,我猜你运气不好:如果你想要实际值,你必须回答“是”。
[再次将评论发布在OP的问题中作为答案,正如@Jim K所建议的那样]
答案 1 :(得分:0)
尝试此代码,更新CALC文档的DDE链接(无头模式)
<script type="text/javascript" src="inline.bundle.js"></script>
<script type="text/javascript" src="polyfills.bundle.js"></script>
<script type="text/javascript" src="styles.bundle.js"></script>
<script type="text/javascript" src="vendor.bundle.js"></script>
<script type="text/javascript" src="main.bundle.js"></script>
注意:此代码段仅适用于CALC,WRITER使用Sub autoupdate_DDE
' 20170314
' load library with help function
GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
' get all DDE links of document '
dde_links = ThisComponent.DDELinks
' get array of names '
aEN = dde_links.getElementNames()
' work on every DDE link '
for i = 0 to UBound( aEN() )
xTF = dde_links.getByName( aEN( i ) )
xTF.refresh()
Next
End Sub
代替DDE链接。
[作为另一个答案提供,以便使用代码格式。在注释结尾添加了单引号字符串,以保留代码着色]