Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 同时复制多个工作表以保留图表引用_Vb.net_Excel_Interop_Templates_Worksheet - Fatal编程技术网

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

Vb.net 同时复制多个工作表以保留图表引用,vb.net,excel,interop,templates,worksheet,Vb.net,Excel,Interop,Templates,Worksheet,我在Excel中创建了一个两个工作表模板——第一个工作表用于漂亮的图表,另一个工作表用于驱动这些图表的数据。我已经编写了一个vb.NET2005应用程序,可以在第二个工作表中转储我的所有数据,图表工作表可以完美地更新 我想在同一个工作簿中重复几次这个报告。(因此,选项卡将显示“Person1-Chart”、“Person1-Data”、“Person2-Chart”、“Person2-Data”等。) 我的解决方案是,对于每个要运行此报告的人,复制图表模板,然后复制数据模板。问题在于,创建的每个

我在Excel中创建了一个两个工作表模板——第一个工作表用于漂亮的图表,另一个工作表用于驱动这些图表的数据。我已经编写了一个vb.NET2005应用程序,可以在第二个工作表中转储我的所有数据,图表工作表可以完美地更新

我想在同一个工作簿中重复几次这个报告。(因此,选项卡将显示“Person1-Chart”、“Person1-Data”、“Person2-Chart”、“Person2-Data”等。)

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


有没有一种方法可以成对复制工作表,保持与工作表本身的关系,而不是与父工作表的关系?

我没有使用编程应用程序来实现这一点,但是如果您将数据复制到同一工作表,并使用分页符预览设置工作表,以避免打印数据表,然后你可以复制和粘贴工作表一遍又一遍,你的图表参考将保持有效


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

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

使用SetSourceData方法

ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A3:D7")
是的,在使用复制功能之前。如果您是手动操作,请不要忘记在之后取消选择,否则您将同时向这两个选项中输入数据

在VBA中:

Sheets(Array("Chart template", "Data template")).Select
ActiveWindow.SelectedSheets.Copy After:=Sheets("Data template")
在互操作中:

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

哦,真聪明!我仍然希望分割数据(以满足规范),但如果没有办法,这正是我将采取的方向。谢谢大家!!编辑以修复错误的副本评论,这正是我要找的。谢谢你。哇,甚至在我给出互操作版本之前?最终对整个工作簿进行了选择-但这种数组技巧在今后会派上用场。