Author |
Topic |
|
bdfy
Belarus
267 Posts |
Posted - 06/11/2010 : 23:00:56
|
выдает такую вот ошибку "Microsoft Visual Basic Run-time error '-2032464666 (86db0ce6)': An exception occurred."
quote: 'этот скрипт заменяет простые линии на сматршейп нужный Private Sub Document_ShapeAdded(ByVal vsoShape As Visio.IVShape)
geom_c = vsoShape.GeometryCount 'число секций geom1_r = vsoShape.RowCount(visSectionFirstComponent) 'рядов в секции
If Not ActivePage.name = "исх. схема" Then Exit Sub
Dim vsoMaster As Visio.Master Set vsoMaster = vsoShape.Master
Dim vsoPage As Visio.Page
Dim vsoBegX As Object Dim vsoBegY As Object Dim vsoEndX As Object Dim vsoEndY As Object Dim vsoWidth As Object Dim strBowCell As String Dim strBowFormula As String Dim intIndex As Integer Dim intCounter As Integer Dim vsoLine As Object 'Set vsoCell to the Scratch.X1 cell and set its formula. Set vsoBegX = vsoShape.Cells("BeginX") Set vsoBegY = vsoShape.Cells("BeginY") Set vsoEndX = vsoShape.Cells("EndX") Set vsoEndY = vsoShape.Cells("EndY") Set vsoWidth = vsoShape.Cells("Width") Set vsoWidth = vsoShape.Cells("Width") If geom_c = 1 And geom1_r = 3 Then 'линия ' vsoShape.CellsSRC(visSectionObject, visRowXForm1D, vis1DBeginX).FormulaU = vsoBegX & " mm" ' Set vsoLine = Drop(ActiveDocument.Masters.ItemU("line"), 0, 0) Set vsoLine = Application.ActiveWindow.Page.Drop(ActiveDocument.Masters.ItemU("lineP2"), 0, 0) Debug.Print vsoLine ' expression.Drop(ObjectToDrop, xPos, yPos) vsoLine.CellsSRC(visSectionObject, visRowXForm1D, vis1DBeginX).FormulaU = vsoBegX vsoLine.CellsSRC(visSectionObject, visRowXForm1D, vis1DBeginY).FormulaU = vsoBegY vsoLine.CellsSRC(visSectionObject, visRowXForm1D, vis1DEndX).FormulaU = vsoEndX vsoLine.CellsSRC(visSectionObject, visRowXForm1D, vis1DEndY).FormulaU = vsoEndY Set vsoConnects = vsoShape.Connects For intCounter = 1 To vsoConnects.Count
Set vsoConnect = vsoConnects(intCounter) Set vsoConnectTo = vsoConnect.ToSheet ' Set Gluecell = vsoLine.CellsSRC(visSectionObject, visRowXForm1D, vis1DBeginX) ' Gluecell.GlueTo vsoConnectTo.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinX) 'Print the name of the shape the 'Connect object connects to. ' MsgBox vsoConnectTo
Next intCounter ' MsgBox vsoShape.Connects(0).ToSheet.NameID 'MsgBox "test " & Round(vsoWidth * 25.4, 1) 'Get the Master property of the shape. vsoShape.Delete ElseIf Left(vsoShape.name, 2) = "NY" Then num = GetmaxNum("NY", "_VisDM_NY") + 1 If num <= 7 Then vsoShape.Cells("Prop._VisDM_NY") = num If num = 1 Or num = 7 Then vsoShape.Cells("Prop._VisDM_type") = 1 Debug.Print num End If End If
End Sub
" vsoLine.CellsSRC(visSectionObject, visRowXForm1D, vis1DBeginX).FormulaU = vsoBegX" вот на этой строке падает. раньше (еще неделю назад) работал как часики... чего изменилось ума не приложу перенес в отдельный файл - все равно глючит. может кто запустить/протестировать ? рисуете линию - она должна на шейп заменятся по ссылке vsd http://rapidshare.com/files/397980648/Drawing2.vsd.html |
|
Tumanov
Russia
1198 Posts |
Posted - 06/12/2010 : 05:46:08
|
Я не понимаю, как это могло работать. Ошибка в том, что Вы переменной типа Long пытаетесь присвоить значение типа Object. Чтобы заработало, нужно сделать следующее: 1. Объявлено Dim vsoBegX As Object. Это надо убрать. 2. Вместо Set vsoBegX = vsoShape.Cells("BeginX") написать просто vsoBegX = vsoShape.Cells("BeginX") 3. Не лезть в формулу, а присваивать так vsoLine.CellsSRC(visSectionObject, visRowXForm1D, vis1DBeginX) = vsoBegX ---------- P.S. Кажется понял... :) У Вас раньше было неявное преобразование в строку .FormulaU = vsoBegX & " mm" В таком сочетании может и работало. |
|
|
bdfy
Belarus
267 Posts |
Posted - 06/12/2010 : 08:44:04
|
quote: 3. Не лезть в формулу, а присваивать так
+ так и переделал. заработало. но почему ж блин работало целый год... |
|
|
Tumanov
Russia
1198 Posts |
Posted - 06/12/2010 : 10:19:50
|
Где-нибудь была строчка с миллиметрами, которая заставляла VBA преобразовывать переменную в строку. Потом эту строчку стерли. У VBA пропал повод для преобразования и он стал подсовывать Visio другой тип данных. |
|
|
|
Topic |
|
|
|