gpt4 book ai didi

macros - 在 OpenOffice Calc 中自动化图表标题

转载 作者:行者123 更新时间:2023-12-04 18:09:05 25 4
gpt4 key购买 nike

我什至不确定我是否可以在 Excel 中执行此操作,但我有理由相信,在 VBA 世界中有足够多的经验,我可以实现它。但是,在可预见的 future 我已经切换到 OpenOffice,所以我的问题是:

在 OpenOffice 4.0 中是否可以将图表标题链接到电子表格单元格?本质上,我希望图表上有一个漂亮的粗体标题,该标题会在电子表格上的特定单元格更新时发生变化。此单元格已控制图表上绘制的数据。

最佳答案

是的,这是可能的,而且使用 OpenOffice 宏非常容易。一步一步:

启用宏

转到工具 > 选项菜单,然后单击 OpenOffice.org 下的安全部分。到达那里后,单击宏安全 按钮。现在,在安全级别 选项卡上,确保您的设置允许您运行宏。

我的设置很低,因为我是我运行的所有宏的作者,如果您不确定这是您的情况,您可能需要使用更高的设置。

注意:小心,如果你运气不好或者生活在 90 年代,一个邪恶的宏可能会造成严重的伤害!


创建新宏

现在您可以运行它们了,您必须创建一个新的宏。 OpenOffice 接受多种语言,包括 Python,但由于您在问题中提到了 VBA,我将在此处使用它的 OO 版本。

转到工具 > 宏 > 组织宏 > OpenOffice.org Basic,然后在文件树下添加一个新模块。给它一个有意义的名字。

New module


实际的宏

一旦你创建了一个新的模块,编辑器屏幕就会弹出,在下面写下这段代码:

' Set the title of the first Chart to the contents of C1
Sub SetTitle
' Get active sheet
oSheet = ThisComponent.CurrentController.ActiveSheet

' Get the cell containing the chart title, in this case C1
oCell = oSheet.getCellRangeByName("C1")
oCharts = oSheet.getCharts()

' Get the chart with index 0, which is the first chart created
' to get the second you would use 1, the third 2 and so on...
oChart = oCharts.getByIndex(0)


oChartDoc = oChart.getEmbeddedObject()

'Change title
oChartDoc.getTitle().String = oCell.getString()
End Sub

要对其进行测试,只需创建一个图表,将一些内容作为标题放在单元格 C1 上,然后运行宏。您可以通过多种方式运行宏,出于测试目的,只需使用用于创建模块的同一窗口上的“运行”按钮。这是预期的结果:

Expected results


进一步完善宏

宏目前存在一些问题,例如:

  • 每次要更新标题时都必须重新运行宏。

这很容易修复。有很多方法可以使宏执行自动化,我最熟悉的一种方法是让它循环运行并延迟 5 秒,并在文件加载后立即启动。

Sub Main
Do While True
SetTitle()
Wait(5000)
Loop
End Sub

从现在开始,您应该调用 Main sub 而不是 SetTitle。

要使宏在启动时运行,请转到事件 选项卡上的工具 > 自定义,然后从列表中选择打开文档点击按钮。在选择宏的对话框中,选择Main。现在关闭文档,重新打开它,瞧!

  • 必须通过索引来处理图表。

您可以改用图表名称(右键单击图表 > 名称),如下所示:

oChart = oCharts.getByName("Chart Name")

进一步阅读

关于macros - 在 OpenOffice Calc 中自动化图表标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18834446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com