使用Excel电子表格数据将形状导入(移动和调整大小)到Visio

xu3bshqb  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(152)

我现在有点困。我尝试使用excel数据将形状导入visio并移动/调整大小。我有一个正在运行的gui,让用户选择他需要的所有东西,但代码没有正常运行。我目前的计划(在许多计划中)是在visio文件中使用一个sub来处理形状的移动和大小调整。所以excel只会调用那个宏并传递所有需要的信息。
visio子然后将复制(导入图像失败,所以atm我需要一个包含所有可用图像的db表,正确命名以识别所需图像)图像到我的Map页面,然后将调整图像大小并正确定位。
我已经在mapPage.Drop()或mapPage.Import()周围尝试了几种方法,但由于某些我不明白的原因,这些方法都不起作用。
现在我有了CreateTile函数

Public Sub CreateTile(x As String, y As String, lWidth As String, lHeight As String, sTile As String)
    Dim dbPage As Visio.Page
    Dim mapPage As Visio.Page
    Dim srcShape As Visio.Shape
    Dim newShape As Visio.Shape
    
    Set dbPage = ActiveDocument.Pages("DB")
    Set mapPage = ActiveDocument.Pages("Map")
    Set srcShape = dbPage.Shapes(sTile)
    
    srcShape.Copy
    mapPage.Paste
    
    Set newShape = mapPage.Shapes.ItemFromID(mapPage.Shapes.Count)
    newShape.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinX).FormulaU = x & " mm"
    newShape.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinY).FormulaU = y & " mm"
    newShape.CellsSRC(visSectionObject, visRowXFormOut, visXFormWidth).FormulaU = lWidth & " mm"
    newShape.CellsSRC(visSectionObject, visRowXFormOut, visXFormHeight).FormulaU = lHeight & " mm"
End Sub

字符串
它将被我的Excel函数调用

sParam = CStr(Replace(Round(coords(0), 4), ",", ".")) & ", " & CStr(Replace(Round(coords(1), 4), ",", ".")) & ", " & CStr(ufMain.tBoxWidth.Text) & ", " & CStr(Replace(Round(CDbl(101.6 * ufMain.tBoxWidth.Text / 67.7333), 4), ",", ".")) & ", " & CStr(sTile)
                    
Debug.Print ("CreateTile " & sParam)
visDoc.ExecuteLine "CreateTile " & sParam


Debug.Print将返回CreateTile 40, 34.642, 40, 60, shapeName01。sParam中的Replace()是因为使用了而不是。作为分隔符,这对于Excel没有问题,但对于Visio。所以我决定只传输字符串,其余的在visio站点上处理。
在使用的Visio端

Sub test()
    CreateTile "40", "34.642", "40", "60", "hexForestBroadleaf00"
End Sub


来测试Visio端的代码是否有效,它真的像一个魅力。我甚至可以通过visDoc.ExecuteLine "Test "多次从Excel端调用test(),所以我假设我在将参数传输到visio时遇到了问题,但我没有得到错误。
我很高兴得到任何帮助,因为解决这个问题将为我节省一真实的堆时间。:)

1cklez4t

1cklez4t1#

@社区我正在寻找一种方法来调用visio makro与参数出excel文件。
必须添加前缀ThisDocument.才能从Excel调用Visio宏。这条线看起来像

visDoc.ExecuteLine "Thisdocument.CreateTile ""1"", ""2"", ""3"", ""4"", ""5"""

字符串

相关问题