2009-04-22 12 views
1

Ich habe in Excel eine Vorlage mit zwei Arbeitsblättern erstellt - das erste Blatt ist für hübsche Diagramme und das andere Blatt für die Daten, die diese Diagramme steuern. Ich habe eine vb.net 2005-App geschrieben, die alle meine Daten auf dem zweiten Arbeitsblatt speichern kann, und das Diagramm-Arbeitsblatt wird perfekt aktualisiert.Kopieren mehrerer Arbeitsblätter gleichzeitig, um Diagrammreferenzen beizubehalten

Ich möchte diesen Bericht mehrmals im selben Arbeitsbuch tun. (So ​​würden die Tabs 'Person1 - Chart', 'Person1 - Daten', 'Person2 - Chart', 'Person2 - Daten', etc.) sein.

Meine Lösung war, für jede Person, die dieser Bericht ansprach ausgeführt werden, kopieren Sie die Diagrammvorlage und kopieren Sie dann die Datenvorlage. Das Problem besteht darin, dass jede erstellte Diagrammvorlage auf das ursprüngliche Datenarbeitsblatt verweist. Wie kann ich festlegen, auf welches Arbeitsblatt jedes Diagrammblatt zeigt?

Gibt es eine Möglichkeit, Arbeitsblätter paarweise zu kopieren und dabei die Beziehung zu sich selbst und nicht zu den Eltern beizubehalten?

Antwort

2

Ja, select both sheets, bevor Sie die Kopierfunktion verwenden. Wenn Sie es manuell tun, vergessen Sie nicht, danach die Auswahl aufzuheben, oder Sie geben beide Daten ein.

In VBA:

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

In Interop:

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

GENAU, was ich gesucht habe. Vielen Dank. – Jeffrey

+0

Wow, schon bevor ich die Interop-Version gegeben habe? – Mark

+0

Hat eine Auswahl für die gesamte Arbeitsmappe gemacht - aber dieser Array-Trick wird sich als nützlich erweisen. – Jeffrey

0

Ich habe keine programmierte App verwendet, um dies zu erreichen, aber wenn Sie die Daten auf das gleiche Blatt bringen und das Blatt mit der Seitenumbruchvorschau einrichten, um das Drucken des Datenblattes zu vermeiden, können Sie kopieren und einfügen das Blatt immer und immer wieder und Ihre Chart-Referenzen bleiben gültig.

Abhängig von der Menge der Daten, die Sie verwenden, ist dies möglicherweise keine ideale Lösung, aber es ist, wie ich dieses Problem gemeistert habe.

+0

Oh, das ist clever! Ich würde immer noch gerne die Daten aufteilen (um die Spezifikation zu erfüllen), aber wenn es keinen Weg gibt, ist das genau die Richtung, die ich nehmen werde. Vielen Dank! – Jeffrey

0

Sie können die Referenzen im Diagramm nach dem Kopieren korrigieren.

Verwenden SetSourceData Methode

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

Bearbeiten, um Fehlerkopie Kommentar zu beheben –