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)

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。

若要添加评论,请使用您的 Windows Live ID 登录(如果您使用过 Hotmail、Messenger 或 Xbox LIVE,您就拥有 Windows Live ID)。登录


还没有 Windows Live ID 吗?请注册

Чекайте на наступну версію :)
4 月 4 日
А якщо в посиланнях будуть зустрічатися конструкції типу - [12-34], то що при цьому буде робити макрос?
Ну взагалі-то я розумію, що цей випадок не підпадає під розглінуті в цій задачі. Тобто я потім вже можу додати такі посилання, після перевірки макросом...?  Я правильно зрозуміла? :)
3 月 23 日

引用通告

此日志的引用通告 URL 是:
http://peleshenko.spaces.live.com/blog/cns!C22B7611BB9D0310!175.trak
引用此项的网络日志