Vba

Liebe/-r Experte/-in,

Ich habe ein VBA-Problem. Und zwar lasse ich mir mit folgenden Code (s.u.) ein Organigramm generieren. Das funktioniert auch, allerdings nur bis Office 2003. Ab Office 2007 bekomme ich die Fehlermeldung „Object doesn’t support this action“ bei der Zeile
Set oCurShape = oCurWorkApplObj.ActiveDocument.Shapes.AddDiagram _

Kann mir da jemand weiterhelfen?

Viele Grüsse,
Nick

Sub TextShapeAddText()
'/ Dim Integer(s)
Dim i As Integer

'/ Dim Object(s)
Dim oCurShape As Object
Dim oCurShapeNode As Object
Dim oCurDiagNode As Object
Dim oCurWorkApplObj As Object

'/ Create a Word application object.
Set oCurWorkApplObj = CreateObject(„Word.Application“)

'/ Open a new Word document.
Workbooks.Add
oCurWorkApplObj.Documents.Add

'/ Add a shape.
Set oCurShape = oCurWorkApplObj.ActiveDocument.Shapes.AddDiagram _
(msoDiagramOrgChart, 10, 15, 400, 475)

'/ Add a node.
Set oCurShapeNode = oCurShape.DiagramNode.Children.AddNode

'ActiveSheet.Shapes(1).Diagram.Nodes(1).TextShape.Fill.BackColor.SchemeColor = 17
'/ Add child nodes.
For i = 1 To 3
oCurShapeNode.AddNode
Next

'/ Add text to the child nodes.
For i = 1 To 4 'Inserting text in each node
oCurShapeNode.Diagram.Nodes.Item(i) _
.TextShape.TextFrame.TextRange.Text = Str(i)
Next

'/ Copy the shape to Excel.
oCurWorkApplObj.ActiveDocument.Shapes.SelectAll
oCurWorkApplObj.Selection.Copy
ActiveSheet.Paste

'/ Quit Word.
oCurWorkApplObj.Quit saveChanges:=False

End Sub

Hallo Nickm

SmartArts (und dazu gehört das neue Organigramm in
Excel 2007) sind leider nicht im Office-Objektmodell
integriert und können deshalb auch
nicht mit VBA erstellt und bearbeitet werden.

Genau wie die Multifunktionsleiste lassen sich
SmartArts ausschließlich per XML-Code
generieren. Hier kenne ich die Vorgehensweise
allerdings auch nicht.

Die xml Dateien kannst du dir anschauen, indem du den
Dateinamen der geschlossenen Datei
um die Endung „.zip“ erweiterst im Ordner ‚xl/diagrams‘
die xml-Dateien mit einem Editor öffnest.

Einen ganzen Thread, der sich zumindest mit dem
Auslesen von Informationen befasst, findest du hier:
http://www.eggheadcafe.com/conversation.aspx?
messageid=34470201&threadid=34428088

Keine bessere Nachricht, leider.

lg

Hallo Nick,

die Fehlermeldung rührt daher, dass Du ein Softwarepaket nicht installiert hast. Gehe mal in die „normale“ Hilfe von MS Excel 2007 und gebe da folgenden Begriff ein „Wo finde ich das Microsoft Office-Organigramm?“. Dort wird Dir die Installation erläutert.
Da Du hier einen Umweg über eine Word-Application machst, wäre es sinnvoll, dieses AddIn im Word zu installieren.
Ob dies dann wirklich auch im VBA so funktioniert kann ich Dir leider nicht sagen. Microsoft hat die Weiterentwicklung von MS Organigramm eingestellt und dafür in den Smart-Arts eine „Hierarchie“ hinzugefügt. Für mich sicher die bessere Alternative, ob dies Dir weiterhilft ist jedoch fraglich.

Beste Grüße
Gerd

Tut mir leid. Ich arbeite nicht mit Office 2007. Der Code scheint soweit sauber zu sein, allerdings habe ich die Erfahrung gemacht, dass man in der Office-Welt öfter 'mal einzelne Schritte explizit nennen muss.
Beispiel:
Dim LiefNicht As Boolean, K As Boolean
Dim T As String, b As Single, h As Single
Dim D As Word.Document, e As Word.Document, w As Word.Window, A As Word.InlineShape, tb As Word.TextFrame
On Error Resume Next
Err.Clear
Set e = New Word.Document
Set D = e.ActiveWindow.Application.Documents.Add(Template:=„e:\AMA\MitLogo2000.dot“, NewTemplate:=False, DocumentType:=0) '( „e:\AMA\MitLogo.dot“, False, 0)
If Err.Number 0 Then Set D = Word.Documents.Add '(„e:\AMA\MitLogo.dot“, False)
e.Close 0
Set w = D.ActiveWindow
LiefNicht = (w.Application.Documents.Count = 1)
Err.Clear
With w

Also Word in die Verweise laden und dann die einzelnen Objekt-Instanzen und Unterobjekte einzeln in genau(!) passende Variablen lesen und dann einzeln ansprechen. Dies liefert interessanterweise auch präzisere Fehlermeldungen.

Meld’ Dich, wenn das weitergeholfen hat!

Gruß
Aidt

Hallo Nick,

vermutlich hat sich für Office 2007 der Methodenaufruf namentlich geändert oder wurde durch eine andere Methode abgelöst. Näheres ist mir dazu auch nicht bekannt.

Eventuell hilft AddChart weiter?

Beste Grüße

M.N.

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

Hallo Nick,

die Diagramm-Funktion wurde komplett überarbeitet.
Empfehlung: Die Diagramm-Funktion unter 2007 als Makro aufzeichnen, dann erfährst du die neuen Befehle.

Es wurde unter VBA 2007 einiges entfernt und neu geordnet, was in den alten Versionen noch aus Kompatibilitätsgründen mitgeschleift wurde.

Wenn du mit miener Antwort nixht weiter kommst, bitte nochmals einen Funk.

Gruß Reinold

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

Hallo Gerd,

Danke für den Hinweis. Leider kann das Organigram-AddIn nicht über VBA gesteuert werden.

Viele Grüsse,
Nick

Hallo Reinold,

Diagramme werden ab 2007 über die SmarArts erstellt. Diese können leider nicht als Makro aufgezeichnet werden. Somit hab ich wohl keine Chance, mein Makro auch in Excel 2007 zu verwenden.

Viele Grüsse,
Nick

Hallo Nick,
dass ist wohl eine irrige Meinung mit den SmartArts. Damit werden nur Bildgrafiken erzeugt, keine Diagramme.

Direkt neben dieser Auswahl findest Du aber die Diagrammfunktion, die man auch als Makro aufzeichnen kann:

ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range(„xxxxxx“)
ActiveChart.ChartType = xlColumnClustered

Probiere es einfach mal aus.
Und viel Spaß beim formatieren des Diagramms.

Grüße
Reinold
DB-Entwicklung und
IT-Trainings

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

Hi Reinold,

Ich möchte aber kein Tortendiagram oder Ähnliches mit Macros erstellen, sondern ein Organisationsdiagramm. Dafür sehe ich im 2007er kein Chart, sondern eben nur die Möglichkeit über SmartArts. Vor 2007 gabs noch ein Extra-Organigramm-Tool, das jetzt leider nicht mehr da ist. Seh ich das richtig?

Viele Grüsse,
Nick

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

Das ist richtig, dieses Tool gibt es jezt (gottseidank) nicht mehr.
Ich habe noch nicht ausprobiert, ob Smartarts Makro fähig sind. Müßte gehen

Eine Alternative wäre die Zeichenmethode, mit der man die Strukturen ohne Zwänge (Kollege, Manager…) erstellen kann.

Gruß Reinold

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