Word или LibreOffice / OpenOffice - Как автоматически вставить текст сноски в текст документа в виде ссылки на сноску?


1

У меня есть несколько документов docx, которые содержат много сносок, обычно с коротким текстом сноски (например, «Richard 2010.» или «see section xy»). Гораздо удобнее располагать их в теле документа в квадратных скобках [] вместо ссылочного знака сноски. Я не нахожу функцию для этого в Word или LibreOffice. Я думаю, мне нужен макрос.

Я видел здесь макрос, который преобразует комментарии в сноски. Это всего десять строк , В течение одной ночи я пытался изучить некоторые основы макросов и изменить некоторые существующие макросы, но с треском провалился.

Ответы:


0

Отправная точка:

Sub bootNoteIntoBody()
Dim bScreenUpdating As Boolean
Dim oDoc As Document
Dim oNote As Footnote
Dim rng As Range
Dim strStyleName As String

bScreenUpdating = Application.ScreenUpdating
On Error GoTo finish
Application.ScreenUpdating = False
Set oDoc = ActiveDocument
For Each oNote In ActiveDocument.Footnotes
  ' choose your own maximum length
  If Len(oNote.Range.Text) < 20 Then
    Set rng = oNote.Reference
    With rng
      strStyleName = .Style
      .Text = "[" & cleanup(oNote.Range.Text) & "]"
      .Style = strStyleName
    End With
  End If
Next

finish:
Application.ScreenUpdating = bScreenUpdating

End Sub

Function cleanup(s As String) As String
' replace certain characters by space.
Dim i As Integer
Dim r As String
r = ""
For i = 1 To Len(s)
  Select Case AscW(Mid(s, i, 1))
    Case 1 To 31 ' and perhaps others
      r = r & " "
    Case Else
      r = r & Mid(s, i, 1)
  End Select
Next
cleanup = r
End Function
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.