Ich versuche, programmatisch eine Zeitachse und Marker mit den Visio 2010 COM-Interops zu erstellen. Mein Code basiert auf Chris Castillos zweiteiligem Blog-Beitrag (Teil 1, Teil 2), der das einzige halbwegs vollständige Beispiel ist, das ich finden konnte, wie man das macht. Allerdings scheint sein Blog (aus dem Jahr 2004) nicht richtig zu funktionieren. Die Meilensteine sind nicht wirklich mit der Zeitachse verbunden, und wenn ihr Datum aktualisiert wird, bewegen sie sich nicht an die richtige Stelle.
Irgendwelche Vorschläge oder Fixes?
Imports Microsoft.Office.Interop.Visio
Imports System.Diagnostics.CodeAnalysis
Imports System.Runtime.InteropServices
...
Dim VisioApp As New Application
Dim myDoc As Document = VisioApp.Documents.Add("")
Dim myPage As Page = myDoc.Pages.Item(1)
Dim TimelineStencils As Document =
VisioApp.Documents.Add("Timeline Shapes.vss")
Dim theTimeline As Shape
Dim theMilestone As Shape
VisioApp.AlertResponse = 1
theTimeline = myPage.Drop(
TimelineStencils.Masters.ItemU("Block timeline"), 5.610236, 5.511811)
theTimeline.CellsU("User.visBeginDate").FormulaU = _
VisioApp.ConvertResult(
"1/1/2004", VisUnitCodes.visDate, VisUnitCodes.visInches)
theTimeline.CellsU("User.visEndDate").FormulaU = _
VisioApp.ConvertResult(
"12/31/2004", VisUnitCodes.visDate, VisUnitCodes.visInches)
VisioApp.Addons("ts").Run("/cmd=3")
theMilestone = myPage.Drop( _
TimelineStencils.Masters.ItemU("Line milestone"), _
5.610236, 5.511811)
theMilestone.CellsU("User.visMilestoneDate").FormulaU = _
VisioApp.ConvertResult(
"7/1/2004", VisUnitCodes.visDate, VisUnitCodes.visInches)
VisioApp.AlertResponse = 0