Поиск/замена в окне редактора синтаксиса
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 'Поиск/замена в окне редактора синтаксиса. Option Explicit Sub Main ' Скрипт ищет указанный блок текста в окне синтаксиса и заменяет его другим блоком. ' Указания к запуску: ' Введите целевые строки (которые следует заменить) в начало окна назначения синтаксиса. ' Введите два обратных слеша (\\\\) в начало следующей за ними строки ' Введите строки, которыми будут заменены целевые строки, начиная ввод сразу после символов \\\\ ' Введите два обратных слеша (\\\\) в начало следующей за ними строки ' Не оставляйте в строках вашего кода концевых пробелов ' Предупреждение: ' После первой замены скрипт проведёт замену и во всех последующих строках ' совпадающих с целевыми. ' Размещено в новостной группе spss 10.09.2003. Автор: Raynald Levesque. Dim objSyntaxDoc As ISpssSyntaxDoc Dim strSynCmd As String Dim intPos As Integer Dim strScript As String Dim strReplace As String Dim strFind As String Set objSyntaxDoc=objSpssApp.GetDesignatedSyntaxDoc Debug.Print objSyntaxDoc.GetDocumentPath 'Сохраним синтаксис, который находится в окне назначения синтаксиса '(если обнаружится некорректная замена, её можно будет "отменить", 'заново загрузив сохранённый файл синтаксиса). If objSyntaxDoc.GetDocumentPath <> "" Then objSyntaxDoc.SaveAs (objSyntaxDoc.GetDocumentPath) Else MsgBox ("Сохраните синтаксис из окна назначения, " & vbCrLf & "затем попытайтесь снова.") Exit Sub End If Debug.Clear strSynCmd = objSyntaxDoc.Text Debug.Print strSynCmd strFind = Left(strSynCmd,InStr(strSynCmd,"\\\\") - 1) Debug.Print "strFind=" & vbCrLf & strFind 'Redefine rest of syntax strSynCmd = Mid(strSynCmd,InStr(strSynCmd,"\\\\") + 2) Debug.Print "Rest of syntax " & vbCrLf & strSynCmd strReplace = Left(strSynCmd,InStr(strSynCmd,"\\\\") - 1) Debug.Print "Replace by" & vbCrLf & strReplace 'Redefine rest of syntax strSynCmd = Mid(strSynCmd,InStr(strSynCmd,"\\\\") + 3) Debug.Print "Rest of syntax " & vbCrLf & strSynCmd strSynCmd=Replace(strSynCmd,strFind,strReplace) Debug.Print strSynCmd objSyntaxDoc.Text = strFind & "\\\\" & vbCrLf & strReplace & "\\\\" & vbCrLf & strSynCmd Set objSyntaxDoc=Nothing End Sub |
Related pages
...