使用 VBA 取消链接 Excel 图表
Unlinking Excel Chart using VBA
您好,我一直在寻找一种解决方案来取消我的图表(在同一工作表中)与值的链接。
为此,我通常会 select 数据,进入公式 (F2),按 F9 并输入
我的系列会变成数字。
我将其自动化为 sendkeys,我知道在线还有另一个选项,但我希望解决方案作为 sendkeys。
基本上 select Data>F2>F9>Enter。如果我手动执行此操作,效果很好。
我的 VBa 代码如下所示
ActiveChart.ChartArea.Select
Application.SendKeys ("^{s}")
ActiveChart.SeriesCollection(2).Select
Application.SendKeys ("{f2}"), True
Application.SendKeys ("{f9}"), True
Application.SendKeys ("{f9}"), True
Application.SendKeys ("~"), True
Application.SendKeys ("^{s}")
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Select
Application.SendKeys ("{f2}"), True
Application.SendKeys ("{f9}"), True
Application.SendKeys ("~"), True
然而,第二组数据的一半仍然链接。
提前感谢您的帮助 - LGR
尽量避免使用发送键。改用这个:
ActiveWindow.Selection.ShapeRange(1).LinkFormat.BreakLink
来源:http://www.vbaexpress.com/forum/showthread.php?45829-How-to-break-links-to-excel-chart
编辑:根据 David Zemens 的评论,这适用于嵌入式图表,但不适用于 excel 图表对象
您可以像这样将 Series.Values
从 引用 转换为 Range
到实际的基础值。
Sub foo()
Dim cht As Chart
Dim srs As Series
Set cht = ActiveChart
For Each srs In cht.SeriesCollection
srs.Values = srs.Values
Next
End Sub
您好,我一直在寻找一种解决方案来取消我的图表(在同一工作表中)与值的链接。 为此,我通常会 select 数据,进入公式 (F2),按 F9 并输入
我的系列会变成数字。 我将其自动化为 sendkeys,我知道在线还有另一个选项,但我希望解决方案作为 sendkeys。 基本上 select Data>F2>F9>Enter。如果我手动执行此操作,效果很好。
我的 VBa 代码如下所示
ActiveChart.ChartArea.Select
Application.SendKeys ("^{s}")
ActiveChart.SeriesCollection(2).Select
Application.SendKeys ("{f2}"), True
Application.SendKeys ("{f9}"), True
Application.SendKeys ("{f9}"), True
Application.SendKeys ("~"), True
Application.SendKeys ("^{s}")
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Select
Application.SendKeys ("{f2}"), True
Application.SendKeys ("{f9}"), True
Application.SendKeys ("~"), True
然而,第二组数据的一半仍然链接。
提前感谢您的帮助 - LGR
尽量避免使用发送键。改用这个:
ActiveWindow.Selection.ShapeRange(1).LinkFormat.BreakLink
来源:http://www.vbaexpress.com/forum/showthread.php?45829-How-to-break-links-to-excel-chart
编辑:根据 David Zemens 的评论,这适用于嵌入式图表,但不适用于 excel 图表对象
您可以像这样将 Series.Values
从 引用 转换为 Range
到实际的基础值。
Sub foo()
Dim cht As Chart
Dim srs As Series
Set cht = ActiveChart
For Each srs In cht.SeriesCollection
srs.Values = srs.Values
Next
End Sub