同时复制多个工作表以保留图表引用

时间:2009-04-22 18:51:44

标签: vb.net excel interop templates worksheet

我在Excel中创建了一个双工作表模板 - 第一个工作表用于漂亮的图表,另一个工作表用于驱动这些图表的数据。我写了一个vb.net 2005应用程序,可以在第二个工作表上转储我的所有数据,并且图表工作表更新完美。

我想在同一个工作簿中多次执行此报告。 (因此标签会显示'Person1 - Chart','Person1 - Data','Person2 - Chart','Person2 - Data'等。)

我的解决方案是,为每个人运行此报告,复制图表模板,然后复制数据模板。问题是创建的每个图表模板都指向原始数据工作表。如何设置每个图表工作表指向的工作表?

有没有办法成对复制工作表,维持与自己的关系,而不是父母的关系?

3 个答案:

答案 0 :(得分:2)

是,select both sheets使用复制功能之前。如果您是手动操作,请不要忘记之后取消选择,否则您将在两者中输入数据。

在VBA中:

Sheets(Array("Chart template", "Data template")).Select
ActiveWindow.SelectedSheets.Copy After:=Sheets("Data template")

在Interop:

App.ActiveWorkbook.Sheets(New String()
        {"Chart template", "Data template"}).Select()
App.ActiveWindow.SelectedSheets.Copy(After:=
        App.ActiveWorkbook.Sheets("Data template"))

答案 1 :(得分:0)

我没有使用编程的应用程序来完成这项工作,但如果您将数据带到同一张纸上并使用分页预览设置工作表以避免打印数据表,那么您可以复制并粘贴一遍又一遍,您的图表参考将保持有效。

根据您使用的数据量,这可能不是一个理想的解决方案,但它是我如何解决这个问题。

答案 2 :(得分:0)

复制后,您可以修复图表中的引用。

使用SetSourceData方法

ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A3:D7")