Benutzerdefinierte Datenfelder exportieren

Igrafx Professional kann Objekte mit Daten hinterlegen: Ein Doppelklick auf ein Symbol blendet die »Eigenschaften« ein. Unter »Benutzerdefinierte Daten« können Sie über »Einrichten« Felder hinzufügen. Allerdings kann man diese nicht einfach auslesen. Dazu müssen Sie Visual Basic nutzen. Starten Sie Igrafx Professional, wählen Sie ein »Basic Diagram« und dann »Tools | Visual Basic | Visual Basic Editor«. Im Fenster für Projekte öffnen Sie das »Diagraml« und definieren zuerst folgende Variablen:


Dim igxDocument As igrafx3.Document

Dim igxDiagram As Diagram

Dim igxShape As Shape

Dim igxCustomDataDef As CustomDataDefinitions

Dim line As Recordset

Dim AnObject As Object

Dim i As Integer

Const ForReading = 1, ForWriting = 2, ForAppending = 3

Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

Dim fs, f, ts, s

Dim defval As CustomDataValue

Set igxDocument = Application.ActiveDocument

Set igxDiagram = Application.ActiveDocument.ActiveDiagram

Set igxCustomDataDef = igxDocument.CustomDataDefinitions



Dann legen Sie mit den Methoden »CreateObject« und »CreateTextFile« die Textdatei an:


Set fs = CreateObject("Scripting.FileSystemObject")

fs.CreateTextFile "C:\temp\testl.txt"

Set f = fs.GetFile("C:\temp\testl.txt")

Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)


Die letzte Set-Anweisung öffnet die Datei zum Schreiben. Fügen Sie zuerst eine Spaltenüberschrift mit »Write« ein:


ts.write "Name"

For Each AnObject In igxDocument.CustomDataDefinitions

ts.write "," & AnObject.Name

Next



Die erste Spalte erhält den Titel »Name«; so läßt sich der Inhalt zuweisen. Die Bezeichner können Sie über »AnObject.Name« lesen. Die Werte trennt ein Komma. Zuletzt fügen Sie einen Umbruch und eine Leerzeile ein:



ts.write vbCrLf

ts.write vbCrLf



Nun müssen Sie mit einer Schleife die Objektinformation lesen und in die Textdatei schreiben. Eine If-Then-Abfrage sorgt dafür, dass nur Shapes übertragen werden.


For Each AnObject In igxDiagram.DiagramObjects

If AnObject.Type = igxObjectShape Then

ts.write AnObject.Shape.Text

For i = 1 To igxDocument.CustomDataDefinitions.Count

ts.write "," & AnObject.CustomDataValues.Item(CInt(i)).Value

Next

End If

ts.write vbCrLf

Next



Nachdem Sie die Werte in die Felder im Chart eingefügt haben, können Sie das VB-Script ausführen und das Ergebnis in der Datei TEST1.TXT im Ordner »C:\Temp« überprüfen. Diese Datei können Sie dann ganz einfach in Access oder Excel importieren. CHIP-Code IGRAFX