1

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

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

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .