Export nach PNG in Visio 2003 manchmal fehlerhaft

20/02/2009 - 12:54 von Christoph Jüngling | Report spam
Hallo,

ich habe eine Visio-2003-Applikation, in der mit dem untenstehenden
Code (Ausschnitt) ein "Shape" (hier "Icon" genannt) in eine .png-Datei
exportiert wird. Diese Subroutine wird in einer Schleife über alle
Shapes eines bestimmten Layers des aktuellen Visio-Dokuments
aufgerufen.

Der Code ist so gestaltet, dass er zunàchst den "wahren Namen" des
Icons ermittelt, dieses dann aus der Bibliothek in einen leeren Layer
herunterholt, exportiert und danach wieder löscht.

Dabei ist der Export manchmal fehlerhaft, oft jedoch funktioniert er
einwandfrei. Der Fehler àußert sich darin, dass die PNG-Datei anstelle
der üblichen Dateigröße etwa 3x so groß ist, auch die Pixelzahl ist
deutlich höher als sie sein sollte, und es wird nur ein leeres weißes
Rechteck exportiert anstelle des Shapes.

Interessanterweise sind es nicht immer dieselben Icons, die fehlerhaft
exportiert werden, sondern immer mal andere!

Einen Laufzeitfehler gibt es nicht, und es ist auch kein "on error
resume next" im Code enthalten.

Ist ein Fehler im PNG-Export bekannt? Hat jemand eine Idee, wonach ich
sonst noch suchen könnte?

Thx

Chris



<code>
Option Explicit

Public Sub ExportIcon(shpIcon As Shape)

Dim shpDrop As Visio.Shape
Dim strIconName As String
Dim stnObj As Visio.Document
Dim strStencilName As String

'--

strIconName = ... ' Ermittle den Standardnamen des Icons
strStencilName = ...

Set stnObj = Documents(strStencilName)
Set shpDrop = ActivePage.Drop(stnObj.Masters(strIconName), 0, 0)
shpDrop.Export ActiveDocument.Path & "icons\" & strIconName
shpDrop.Delete

End Sub
</code>
 

Lesen sie die antworten

#1 Chris Roth [Visio MVP]
23/02/2009 - 13:36 | Warnen spam
Servus Chris,

Vielleicht ein "DoEvents" nach dem Export helfen wird? Koennte sein,
dass der Code zu schnell laeuft...

Welche Shapes exportierst du?

Wenn welche eigene, besondere "smarts" haben (wie zB Hintergrunde, die
immer so gross wie's Blatt sind, oder shapes, die massstaeblich gebaut
sind) kann es sein, dass die nicht so schoen in deinem ziel-blatt ankommen.

Hope this helps,

Chris Roth
Visio MVP


Visio Guy: Smart Graphics for Visual People

Articles: http://www.visguy.com
Shapes: http://www.visguy.com/shapes
Dev: http://www.visguy.com/category/development/
Forum: http://www.viguy.com/vgforum

Christoph Jüngling wrote:
Hallo,

ich habe eine Visio-2003-Applikation, in der mit dem untenstehenden
Code (Ausschnitt) ein "Shape" (hier "Icon" genannt) in eine .png-Datei
exportiert wird. Diese Subroutine wird in einer Schleife über alle
Shapes eines bestimmten Layers des aktuellen Visio-Dokuments
aufgerufen.

Der Code ist so gestaltet, dass er zunàchst den "wahren Namen" des
Icons ermittelt, dieses dann aus der Bibliothek in einen leeren Layer
herunterholt, exportiert und danach wieder löscht.

Dabei ist der Export manchmal fehlerhaft, oft jedoch funktioniert er
einwandfrei. Der Fehler àußert sich darin, dass die PNG-Datei anstelle
der üblichen Dateigröße etwa 3x so groß ist, auch die Pixelzahl ist
deutlich höher als sie sein sollte, und es wird nur ein leeres weißes
Rechteck exportiert anstelle des Shapes.

Interessanterweise sind es nicht immer dieselben Icons, die fehlerhaft
exportiert werden, sondern immer mal andere!

Einen Laufzeitfehler gibt es nicht, und es ist auch kein "on error
resume next" im Code enthalten.

Ist ein Fehler im PNG-Export bekannt? Hat jemand eine Idee, wonach ich
sonst noch suchen könnte?

Thx

Chris



<code>
Option Explicit

Public Sub ExportIcon(shpIcon As Shape)

Dim shpDrop As Visio.Shape
Dim strIconName As String
Dim stnObj As Visio.Document
Dim strStencilName As String

'--

strIconName = ... ' Ermittle den Standardnamen des Icons
strStencilName = ...

Set stnObj = Documents(strStencilName)
Set shpDrop = ActivePage.Drop(stnObj.Masters(strIconName), 0, 0)
shpDrop.Export ActiveDocument.Path & "icons\" & strIconName
shpDrop.Delete

End Sub
</code>

Ähnliche fragen