| Dmitry 的个人资料Дмитрий Пелешенко照片日志列表 | 帮助 |
|
|
3月23日 Еще немного макросов (продолжение)Этот макрос упорядочивает список литературы в порядке следования ссылок в тексте и производит перенумерацию. Работает по такому же принципу. Следует отметить, что если какой то источник (элемент списка литературы) не будет использован, то он будет удален из списка, о чем будет выдано предупреждение. Sub RenumSources() Dim sel As selection sel = ActiveWindow.selection Dim p As Paragraph Dim Sources As New Collection For Each p In sel.Paragraphs Dim number As String Dim l, s As Integer l = p.Range.Characters.Count number = "" text = "" For i = 1 To l c = p.Range.Characters(i) If c >= "0" And c <= "9" Then number = number + c Else s = i Exit For End If Next i For i = s + 2 To l - 1 text = text + p.Range.Characters(i) Next i If number = "" Then p.Range.Comments.Add(p.Range, "Помилка аналізу джерела") Else Sources.Add(Array(number, text)) End If Next p Dim state As Integer state = 0 Dim sourceNumber As Integer sourceNumber = 1 Dim RenumedSources As New Collection Dim str As String For Each w In ActiveWindow.Document.Words str = Trim(w.text) Select Case str Case "[" state = 1 Case "]", "].", "]:", "],", "];", "]-" state = 0 Case ",", " "
Case Else If state = 1 Then For i = 1 To Sources.Count If Sources.Item(i)(0) = str Then RenumedSources.Add(Array(Sources.Item(i)(0), Sources.Item(i)(1), sourceNumber)) sourceNumber = sourceNumber + 1 Sources.Remove(i) Exit For End If Next i End If End Select Next w If Sources.Count > 0 Then If MsgBox("На деякі джерела не знайдено посилань, ці джерела будуть втрачені. Продовжити ?", vbYesNo + vbExclamation, "Ошибка") = vbNo Then Exit Sub End If End If For Each w In ActiveWindow.Document.Words str = Trim(w.text) Select Case str Case "[" state = 1 Case "]", "].", "]:", "],", "];", "]-" state = 0 Case ",", " "
Case Else If state = 1 Then f = False For i = 1 To RenumedSources.Count If RenumedSources.Item(i)(0) = str Then w.text = CStr(RenumedSources.Item(i)(2)) state = 3 f = True Exit For End If Next i If Not f Then w.Comments.Add(w, "Невідоме посилання") End If End If If state > 1 Then state = state - 1 End If End Select Next w sel.text = CStr(RenumedSources(1)(2)) + ". " + RenumedSources(1)(1) + Chr(10) For i = 2 To RenumedSources.Count sel.text = sel.text + CStr(RenumedSources(i)(2)) + ". " + RenumedSources(i)(1) + Chr(10) Next i End Sub
评论 (2)
引用通告此日志的引用通告 URL 是: http://peleshenko.spaces.live.com/blog/cns!C22B7611BB9D0310!175.trak 引用此项的网络日志
|
|
|