为什么我的宏不能与 solidworks 连接?
Why won't my macro connect with solidworks?
我昨晚在使用 excel,但我的宏停止工作了。它链接到 solidworks 文件。这个宏已经用了3-4年了,到昨晚才出问题
我在这一行出现错误 91 "Part.SketchManager.InsertSketch True"
除了我上次 运行 按下 escape 试图停止宏外,没有对文件进行任何更改。对于它停止工作的原因,这可能是巧合,也可能不是巧合。
我没有编写此代码,也无法联系编写此代码的人。请帮我解决一下。
密码是:
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
使用 CreateObject() 会启动一个新的 SOLIDWORKS 进程并默认隐藏。然后您尝试立即使用 ActiveDoc 属性,但是在这个新进程中没有打开文档,然后以下行将触发错误。
有时它会像这样连接一个已经打开的 SOLIDWORKS 进程 - 但并非总是如此!
如果您想连接到打开的 SOLIDWORKS 进程,您应该改用 Set swApp = GetObject(, "SldWorks.Application")
。
我昨晚在使用 excel,但我的宏停止工作了。它链接到 solidworks 文件。这个宏已经用了3-4年了,到昨晚才出问题
我在这一行出现错误 91 "Part.SketchManager.InsertSketch True" 除了我上次 运行 按下 escape 试图停止宏外,没有对文件进行任何更改。对于它停止工作的原因,这可能是巧合,也可能不是巧合。 我没有编写此代码,也无法联系编写此代码的人。请帮我解决一下。
密码是:
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
使用 CreateObject() 会启动一个新的 SOLIDWORKS 进程并默认隐藏。然后您尝试立即使用 ActiveDoc 属性,但是在这个新进程中没有打开文档,然后以下行将触发错误。 有时它会像这样连接一个已经打开的 SOLIDWORKS 进程 - 但并非总是如此!
如果您想连接到打开的 SOLIDWORKS 进程,您应该改用 Set swApp = GetObject(, "SldWorks.Application")
。