Я пытаюсь создать Visio изнутри Excel. Я могу получить фигуры, но метод autoconnect запускается с ошибкой «Ошибка несоответствия». Я также пробовал использовать метод GlueTo.VBA от excel не может visio autoconnect две формы
Не может быть, потому что shpObj не является реальной формой? Мне нужна помощь в том, как, если это так, и как лучше сохранить форму, или, если это возможно, сохранить форму.
shpFrom это только первый shpObj ... Вот как я падаю форму в Visio:
Set shpObj = AppVisio.ActiveWindow.Page.Drop(AppVisio.Documents.Item("Computers and Monitors.vss").Masters.Item("PC"), dXPos, yPos)
Вот как я пытаюсь соединить их:
shpObj.AutoConnect shpFrom, visAutoConnectDirUp
Кажется прямо вперед достаточно, но я не могу заставить его работать. Вот весь код:
Sub VisioFromExcel()
Set AppVisio = CreateObject("visio.application")
AppVisio.Visible = True
AppVisio.Documents.AddEx "Basic Network Diagram.vst", visMSmetric, 0
ComputerStencil = AppVisio.Documents.AddEx("Computers and Monitors.vss", visOpenRO + visOpenDocked)
Connector = AppVisio.Documents.AddEx("Connectors.vss", visOpenRO + visOpenDocked)
AppVisio.Windows.ItemEx(1).Activate
dXPos = AppVisio.ActivePage.PageSheet.Cells("PageWidth")/2
dYPos = AppVisio.ActivePage.PageSheet.Cells("PageHeight")/2
yPos = 1
For x = 4 To 6
'For x = 4 To Worksheets("Inventory").Cells(Rows.Count, 1).End(xlUp).Row
Set shpObj = AppVisio.ActiveWindow.Page.Drop(AppVisio.Documents.Item("Computers and Monitors.vss").Masters.Item("PC"), dXPos, yPos)
If x = 4 Then
shpFrom = shpObj
Else
'shpObj.GlueTo shpFrom
'Set line1 = AppVisio.ActiveWindow.Page.Drop(AppVisio.ConnectorToolDataObject, 1, 2)
'line1.CellsU("BeginX").GlueTo shpFrom.CellsU("PinX")
'line1.CellsU("EndX").GlueTo shpObj.CellsU("PinX")
shpObj.AutoConnect shpFrom, visAutoConnectDirUp
End If
'Level testing for positioning?
'If Len(objName) > 0 Then
'End If
objName = Worksheets("Inventory").Cells(x, 1).Value
shpObj.Text = objName
yPos = yPos - 1.25
Next
'AppVisio.ActiveWindow.Page.CenterDrawing
AppVisio.ActiveWindow.Page.ResizeToFitContents
Set AppVisio = Nothing
End Sub