首页 > 解决方案 > 为什么我的宏无法与solidworks 连接?

问题描述

昨晚我在使用excel,我的宏停止工作。它链接到一个solidworks 文件。这个宏已经使用了3-4年,直到昨晚都没有问题。

我在“Part.SketchManager.InsertSketch True”这一行周围收到错误 91 没有对文件进行任何更改,除了我在上次运行宏时按下了转义键以尝试停止宏。对于它停止工作的原因,这可能是巧合,也可能不是巧合。我没有编写此代码,也无法联系编写此代码的人。请帮我修复它。

代码是:

Dim swApp As Object
Dim Part As Object
Dim boolStatus As Boolean
Dim longStatus As Long, longwarnings As Long
Dim conv As Double
Dim angle As Double
Dim counter As Double
Dim SelMgr As Object
Dim value As Double
Dim Feature As Object
Dim vPoint As Variant
Dim droop_Steps As Integer
Dim step_Size As Double
Dim comp_Steps As Integer
Dim front_row As Integer


Sub plotmotion()
angle = 57.2957795
conv = 0.0254

Set swApp = CreateObject("SldWorks.Application")
Set Part = swApp.ActiveDoc
Dim myDimension As Object
Part.SketchManager.InsertSketch True
front_row = 1
boolStatus = Part.Extension.SelectByID2("plot", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.EditSketch

For counter = 0.887 To 0 Step -0.005
    front_row = front_row + 1

    Set myDimension = Part.Parameter("Sheave Travel@plot")
    myDimension.SystemValue = counter * conv

    Excel.Range("E" & CStr(front_row)) = Part.Parameter("Sheave Travel@plot@RAMP 20-1.Part").SystemValue
    Excel.Range("I" & CStr(front_row)) = Part.Parameter("R@plot@RAMP 20-1.Part").SystemValue
    Excel.Range("F" & CStr(front_row)) = Part.Parameter("H@plot@RAMP 20-1.Part").SystemValue
    Excel.Range("G" & CStr(front_row)) = Part.Parameter("L@plot@RAMP 20-1.Part").SystemValue
    Excel.Range("H" & CStr(front_row)) = Part.Parameter("theta@plot@RAMP 20-1.Part").SystemValue * angle


Next counter
Part.SketchManager.InsertSketch True

End Sub

标签: excelvbasolidworks

解决方案


使用CreateObject()会启动一个新的 SOLIDWORKS 流程,并且默认情况下是隐藏的。然后您尝试立即使用ActiveDoc属性,但在此新进程中没有打开文档,然后以下行将触发错误。有时,连接已打开的 SOLIDWORKS 流程会像这样工作 - 但并非总是如此!

如果您想连接到打开的 SOLIDWORKS 流程,您应该Set swApp = GetObject(, "SldWorks.Application")改用。


推荐阅读