Diagramm kopieren

Hallo,

ich habe folgendes Problem.

Ich habe eine Excel-Datei mit mehreren identischen Arbeitsblättern (ca. 20 Stück). Jetzt möchte ich ein identisches Diagramm in jede Arbeitsmappe einfügen.

Das Problem dabei ist aber, daß wenn ich ein neues Diagramm in der ersten Arbeitsmappe erstelle und dieses in die nächste Arbeitsmappe kopiere, bleiben alle Bezüge auf der ersten Arbeitsmappe. Anschließend muß ich sämtliche bezüge manuell ändern. Bei ca. 20 Arbeitsblättern ist dies allerdings ein riesiger Aufwand.

Vielen Dank für eure Hilfe

Hallo,

wenn es sich um eine einmalige Geschichte handelt, würde ich das 1. Arbeitsblatt mit dem fertigen Diagramm 19 mal kopieren, dann würde ich in jedem kopierten Arbeitsblatt die Datentabelle durch die andere (richtige) Datentabelle ersetzen

wenn das häufiger vorkommt, ist sicher ne andere Lösung sinnvoller, vielleicht mit vba

Gruß
Marion

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

…mit mehreren identischen Arbeitsblättern
ein identisches Diagramm in jede Arbeitsmappe

Hallo,
ist es wirklich so schlimm?
Fuer jedes kopierte Diagramm rechtsklick Datenquelle, Arbeitsblatt wechseln und dieselben Zellen mit der Maus markieren, die hoffentlich zusammenhaengend sind, oder bei Datenquelle den Blattnamen editieren.
Gruss Helmut

Ich habe eine Excel-Datei mit mehreren identischen
Arbeitsblättern (ca. 20 Stück). Jetzt möchte ich ein
identisches Diagramm in jede Arbeitsmappe einfügen.

Hi Karl,

Annahme, du hast 21 Blätter, in Blatt2 bis Blatt 21 soll das Diagramm aus Blatt 1 kopiert werden und die Datenquelle aufs aktuelle Blatt abgeändert werden, Datenquelle ist A9:B14, ggfs im Cod abändern.

Alt+F11, Einfügen Modul, Code reinkopieren, Anpassen, Editor schliessen.
Extras–Makro–Makros–„test“ ausuführen.

Gruß
Reinhard

Option Explicit
'
Sub test()
Dim b As Byte
For b = 2 To 21
 Call diagramme\_kopieren(Worksheets(b))
Next b
End Sub
'
Sub diagramme\_kopieren(wks As Worksheet)
'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
'\* 24.08.06, 01.07.06, 01.04.07 \*
'\* erstellt von Karin, http://beverly.excelhost.de\*
'\* [email protected] \*
'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
 Dim shDiagramm As Shape ' Variable für Diagramm als Shape
' Bildschirmaktualisierung aus
 Application.ScreenUpdating = False
' Diagramm1 der Tabelle1 kopieren
 Worksheets("Tabelle1").ChartObjects(1).Copy
' in Tabelle2 einfügen
 wks.Paste
' das zuletzt eingefügte Diagramm aktivieren
 wks.ChartObjects(wks.ChartObjects.Count).Activate
' Datenquelle als Datenbereich zuweisen
 ActiveChart.SetSourceData Source:=wks.Range("A9:B14")
' aktives Diagramm abwählen
 ActiveChart.Deselect
 With ActiveSheet
' zuletzt eingefügtes Diagramm der Variablen zuweisen
 Set shDiagramm = .Shapes(.ChartObjects.Count)
' Position der linken oberen Ecke des Diagramms auf Zelle E2
 shDiagramm.Top = .Cells(2, 5).Top
 shDiagramm.Left = .Cells(2, 5).Left
' Zelle A1 selektieren, da andernfalls das Diagramm aktiviert bleibt
 End With
' Bildschirmaktualisierung ein
 Application.ScreenUpdating = True
End Sub
'
Sub BlaetterErzeugen()
Dim b As Byte
For b = 1 To 18
 Worksheets.Add after:=Worksheets(Worksheets.Count)
Next b
End Sub

Hallo,

erst einmal vielen Dank für die Antwort. Aber genau das ist das Problem. Ich möchte eben NICHT 20 Mal ‚rechtsklick Datenquelle, usw.‘ ausführen. Dadurch wäre ich die nächsten Jahre damit beschäftigt die Diagramme anzupassen.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

erst einmal vielen Dank für die Antwort. Aber genau das ist
das Problem. Ich möchte eben NICHT 20 Mal ‚rechtsklick
Datenquelle, usw.‘ ausführen. Dadurch wäre ich die nächsten
Jahre damit beschäftigt die Diagramme anzupassen.

und Reinhards Beitrag gelesen?

Ja habe ich. Nur löst es leider nicht ganz mein Problem. Das Diagramm das ich in die Arbeitsmappen einfügen möchte hat keine zusammenhängenden Bezüge. Und leider bin ich mit VB überhaupt nicht vertraut
Beispiel:

Die Tabellen sind wie folgt aufgebaut (Sie sind aller gleich. Sie haben nur unterschiedliche Bezeichnungen wegen anderem Produkt):

A1 B1 C1 D1
Name Umsatz % Umsatz %
Müller 100 10 400 20
Maier 200 30 500 20
Schmidt 300 60 600 60

Ich erstelle nun ein Diagramm mit den Prozentangaben.

Anschließend kopiere ich das Diagramm.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Karl,

und Reinhards Beitrag gelesen?

Ja habe ich. Nur löst es leider nicht ganz mein Problem.

und warum sagst du das mir nicht? *grmmpf*

Das Diagramm das ich in die Arbeitsmappen einfügen möchte hat
keine zusammenhängenden Bezüge.

Na und, kommt vor.

Und leider bin ich mit VB
überhaupt nicht vertraut

Kommt auch vor :smile:

Alles nix schlimmes, schlimm ist einzig die fehlende Rückmeldung…

Die Tabellen sind wie folgt aufgebaut (Sie sind aller gleich.
Sie haben nur unterschiedliche Bezeichnungen wegen anderem
Produkt):
A1 B1 C1 D1
Name Umsatz % Umsatz %
Müller 100 10 400 20
Maier 200 30 500 20
Schmidt 300 60 600 60
Ich erstelle nun ein Diagramm mit den Prozentangaben.

Schau mal hier, Vba mag zwar kompliziert sein zu entwickeln, aber die Benuzung ist denkbar einfach, brauchst nur auf einen Knopf drücken, naja vorher im Code die Bereiche und die Anzahl der Blätter anpassen.

Aber auch als Laie siehst du im Code daß du
For 2 to 3
in
For 2 to 21
abändern mußt um von Blatt 1 nach Blatt 2- Blatt 21 zu kopieren, da ich nur mit insg. 3 Blätern getestet habe.

Und die Bereiche A1:A5, C:C5 usw sind auch find/änderbar.

Her ist die fertige Datei , ihr Code steht nachstehend.

http://www.hostarea.de/server-04/April-995dddb437.xls

Wichtig ist daß die Tabellen alle gleich aufgebaut sind und die Werte vor dem Makroaufruf drin stehen sonst pfuschst da Excel ungefragt rum :smile:

Gruß
Reinhard

Option Explicit
'
Sub test()
Dim b As Byte
For b = 2 To 3
 Call diagramme\_kopieren(Worksheets(b))
Next b
End Sub
'
Sub diagramme\_kopieren(wks As Worksheet)
'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
'\* 24.08.06, 01.07.06, 01.04.07 \*
'\* erstellt von Karin, http://beverly.excelhost.de\*
'\* [email protected] \*
'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
 Dim shDiagramm As Shape ' Variable für Diagramm als Shape
' Bildschirmaktualisierung aus
 Application.ScreenUpdating = False
' Diagramm1 der Tabelle1 kopieren
 Worksheets("Tabelle1").ChartObjects(1).Copy
' in Tabelle2 einfügen
 wks.Paste
' das zuletzt eingefügte Diagramm aktivieren
 wks.ChartObjects(wks.ChartObjects.Count).Activate
' Datenquelle als Datenbereich zuweisen
 ActiveChart.SetSourceData Source:=wks.Range("A1:A5,C1:C5,E1:E5")
' aktives Diagramm abwählen
 ActiveChart.Deselect
 With ActiveSheet
' zuletzt eingefügtes Diagramm der Variablen zuweisen
 Set shDiagramm = .Shapes(.ChartObjects.Count)
' Position der linken oberen Ecke des Diagramms auf Zelle E8
 shDiagramm.Top = .Cells(8, 5).Top
 shDiagramm.Left = .Cells(8, 5).Left
' Zelle A1 selektieren, da andernfalls das Diagramm aktiviert bleibt
 End With
' Bildschirmaktualisierung ein
 Application.ScreenUpdating = True
End Sub

Hallo,

Diagramm das ich in die Arbeitsmappen einfügen möchte hat
keine zusammenhängenden Bezüge. Und leider bin ich mit VB

also konntest du Reinhards Vorschlag nicht ausprobieren?

Beispiel:

Die Tabellen sind wie folgt aufgebaut (Sie sind aller gleich.
Sie haben nur unterschiedliche Bezeichnungen wegen anderem
Produkt):

A1 B1 C1 D1 E1
Name Umsatz % Umsatz %
Müller 100 10 400 20
Maier 200 30 500 20
Schmidt 300 60 600 60

Ich erstelle nun ein Diagramm mit den Prozentangaben.

Anschließend kopiere ich das Diagramm.

schreibt doch mal, an welcher Stelle du nicht weiter kommst. Schritt für Schritt ist vieles lösbar.

Und ein paar mehr Infos wären auch gut. Zum Beispiel:

  • Geht es darum, dass diese 20 Diagramme einmal oder immer wieder gemacht werden

  • wenn die Diagramme regelmäßig gemacht werden, wie kommen dann die Daten in die Tabelle?

  • sollen alle Diagramme mit Datentabelle dargestellt werden?

  • soll jedes Diagramm in einem eigenen Blatt dargestellt werden?

  • können die Daten auch in einer gemeinsamen Tabelle aufgelistet werden?

  • bleiben die alten Daten in den Datentabellen und werden die neuen Daten angefügt oder werden die alten Daten durch die neuen ersetzt?

  • sind makros erlaubt?

Gruß
Marion