在Solidworks中,我录制了两个宏。
宏1为空:
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
'added code
Dim distance_of_second_plane
'end of added code
Sub main()
Set swApp = _
Application.SldWorks
Set Part = swApp.ActiveDoc
'added code: here I want to call the second macro and send it distance_of_second_plane, and have it use that value
distance_of_second_plane = .05
'.. now what?
'end of added code, don't know what to add.
End Sub
宏2执行需要来自宏1的数据:
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub main()
Set swApp = _
Application.SldWorks
Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Front Plane", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
Dim myRefPlane As Object
Set myRefPlane = Part.FeatureManager.InsertRefPlane(8, 0.05334, 0, 0, 0, 0)
Part.ClearSelection2 True
End Sub
这些宏当然保存在不同的文件中。如何从第一个调用第二个,从第一个传入数据,并在第二个中使用它?
我尝试过的事情:http://support.microsoft.com/kb/140033,http://www.cadsharp.com/macros/run-macro-from-another-macro-vba/,VBA module that runs other modules,Call a Subroutine from a different Module in VBA
所有这些都是有问题的。如果被问到,我会详细说明我得到的错误。
答案 0 :(得分:0)
您可以创建一个单独的模块来封装常用方法。然后添加对该模块的引用,并从Macro1和Macro2子例程中调用它。
例如,在你的Macro1:
中
在Module1中创建一个子程序,将其命名为InsertPlane(或任何名称有意义),并使用参数构建子程序,以完成需要完成的工作
Sub InsertPlane(ByRef swApp As Object, ByVal distance As Double)
'enter your code here, the parameters passed to InsertPlane can be whatever you need
'to do what the method needs to do.
End Sub
在宏的main()方法中,在需要时调用InsertPlane()方法
Sub main()
Set swApp = _
Application.SldWorks
Set Part = swApp.ActiveDoc
'added code: here I want to call the second macro and send it distance_of_second_plane, and have it use that value
distance_of_second_plane = 0.05
'example of calling the subroutine
boolstatus = Module1.InsertPlane(swApp, distance_of_second_plane)
End Sub
可以导出和导入模块,因此您可以在其他宏中重复使用它们,右键单击Module1上的项目树并导出文件。同样,您可以右键单击Modules文件夹和Import modules。
希望这有帮助。
答案 1 :(得分:0)
虽然可以使用ISldWorks :: RunMacro2从另一个宏运行宏,但是不可能让此方法返回您可以在第一个宏中使用的任何值。即使这是可能的,我也不会推荐它。
您需要完成的所有工作都可以在一个宏中完成,您只需要学习如何使用SolidWorks API来实现这一目标。你能解释一下你想用宏来完成什么吗?然后我可以告诉你你需要什么代码。
请注意,宏录制器实际上不是创建任何重要宏的好工具。如果您打算认真使用SolidWorks API,那么您真的需要这三项技能:
我的网站(在我的个人资料中)有一些视频可以帮助您入门。同样,如果您希望我帮助您解决当前的问题,请解释您尝试自动化的内容。