【发布时间】:2016-11-07 17:17:45
【问题描述】:
我有一些 VBA 的背景,我讨厌做同样的任务 100 次。我经常需要制作 Solidworks 图纸,这些图纸是模板,主要是我填充数据的表格。文件中的每张纸上需要更改 3 项内容(从第 3 页到最后一张)。通常我会进入每张纸并进行 3 次查找和替换以更改每张纸。然后转到下一张纸并重复。
我的计划是让代码计算工作表的数量,提示用户第一次查找/替换,替换所有工作表上的文本,然后重复第二次替换,第三次重复。我录制了一个宏并添加了一些代码,但我不断收到运行时错误(在下面的代码中)。我记录的每个其他宏都没有给我这么多错误,如果你能帮忙
Dim swApp As SldWorks.SldWorks
Dim swmodel As SldWorks.ModelDoc2
Dim swdraw As SldWorks.DrawingDoc
Dim Part As Object
Dim Otext As String
Dim Ntext As String
Dim Smax As Integer
Dim i As Integer
Dim swSheet As SldWorks.Sheet
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub main()
Set swApp = Application.SldWorks
Set swmodel = swApp.ActiveDoc
'Set swSheet = swdraw.GetCurrentSheet
Smax = instance.GetSheetCount() - 3 ' runtime 424 error here
Set swSheet = swdraw.GetCurrentSheet ' runtime 91 error if i skip the line above
Otext = Application.InputBox("find this text")
Ntext = Application.InputBox("find this text")
For i = 1 To Smax
Set Part = swApp.ActiveDoc
'--------------------Find and Replace Annotations--------------------
Set swUtil = swApp.GetAddInObject("Utilities.UtilitiesApp")
Set swUtilFindReplaceAnnotations = swUtil.FindReplaceAnnotations
longstatus = swUtilFindReplaceAnnotations.InitPMPage()
'--------------------Block Recording--------------------
#If 0 Then
#End If
'--------------------UnBlock Recording------------------
swUtilFindReplaceAnnotations.FindText = Otext
swUtilFindReplaceAnnotations.ReplaceText = Ntext
swUtilFindReplaceAnnotations.options = gtFraMatchCase
swUtilFindReplaceAnnotations.AnnotationFilter = gtFraAllTypes
Part.ClearSelection2 True
Part.ClearSelection2 True
Part.ClearSelection2 True
Part.ClearSelection2 True
Part.ClearSelection2 True
longstatus = swUtilFindReplaceAnnotations.ReplaceAll()
'--------------------Block Recording--------------------
#If 0 Then
#End If
'--------------------UnBlock Recording------------------
longstatus = swUtilFindReplaceAnnotations.Close()
Part.SheetNext
Part.ViewZoomtofit2
Next i
End Sub
【问题讨论】:
-
什么是实例?似乎没有宣布。 swdraw 也从未被声明过。
-
那来自另一个论坛,解释了如何让solidworks计算图纸中的张数。在示例中,它没有被定义,只是使用。
标签: loops replace macros find solidworks