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