У меня есть некоторый опыт работы с 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