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
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
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.
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.
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]
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]
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.
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]