Jason은 학술 법 저널의 학생 편집자입니다. 출판 과정의 일환으로 그는 모든 문장의 표절과 정확성, 그리고 모든 인용을 확인하여 적절한 형식과 지원을 보장해야합니다.

이것은 기본적으로 모든 문장이 각주에 인용 된 인용에 의해 뒷받침되어야 함을 의미합니다. 현재 직원은 저자의 원고 (Word 문서)에서 모든 텍스트 문장, 각주 및 각주 번호를 직원 편집자의 Word 문서에 수동으로 복사하여 붙여 넣은 다음 확인에 사용합니다. Jason은 원고 원본 문서에서 “각주 번호”, “기사 문서의 문장”및 “원본 각주 내용”을 워크 시트 문서로 복사하는이 프로세스를 자동화하는 방법이 있는지 궁금합니다.

Jason이 언급 한 각 작업은 몇 가지 짜증나는 예외를 제외하고 프로그래밍 방식으로 수행 할 수 있습니다. VBA에서 각주 및 미주 컬렉션을 단계별로 살펴보고 정보를 추출하는 것은 그리 어렵지 않습니다. 그런 다음이 정보를 편집자의 워크 시트로 사용할 수있는 새 문서로 이동할 수 있습니다. 짜증나는 부분은 각주와 미주 번호가 동적이므로 접근하기 쉽지 않다는 것입니다.

이 자극제에 대한 전체 토론은 다음 사이트에서 찾을 수 있습니다.

http://www.vbaexpress.com/forum/showthread.php?31231

한 문서에서 다른 문서로 정보를 전송하기 위해 매크로를 만드는 방법은 대부분 작성자의 문서에있는 정보의 특성에 따라 다릅니다. 예를 들어, 저자의 문서에 문장 뒤에 하나 또는 두 개의 공백이 포함되어 있습니까? 문장 당 여러 각주를 허용합니까? 각주 외에 미주를 허용합니까? 테이블이 포함되어 있습니까?

요점은 매크로 개발에 영향을 줄 수있는 고려 사항이 많다는 것입니다. 즉, 모든 매크로는 작업중인 소스 문서에 맞게 미세 조정되어야합니다. 이는 많은 테스트를 의미합니다. 그러나 시작점을 제공하려면 다음 매크로를 고려하십시오. 원본 문서에서 새 문서로 문장, 각주 및 미주 (있는 경우)를 복사합니다.

Sub FootnotesEndnotes()

Dim fNote As Footnote     Dim eNote As Endnote     Dim aRange As Range     Dim sText As String     Dim rText As String     Dim eRef As String     Dim newDoc As Document     Dim oldDoc As Document

Set oldDoc = ActiveDocument     Set newDoc = Documents.Add

sText = "---------------FOOTNOTES---------------" & vbCr     newDoc.Content.InsertAfter sText

oldDoc.Activate     For Each fNote In ActiveDocument.Footnotes         Set aRange = fNote.Reference         aRange.MoveStart unit:=wdSentence, Count:=-1         aRange.MoveEnd unit:=wdSentence         sText = aRange.Text         rText = fNote.Range.Text         With fNote.Reference.Characters.First             .Collapse             .InsertCrossReference wdRefTypeFootnote, _               wdFootnoteNumberFormatted, fNote.Index             eRef = .Characters.First.Fields(1).Result             Selection.Start = fNote.Reference.Start - Len(eRef)

Selection.End = fNote.Reference.Start             Selection.Delete         End With         Call WriteNewdoc(newDoc, sText, rText, eRef, "Footnote Text")

Next fNote

sText = "---------------ENDNOTES----------------" & vbCr     newDoc.Content.InsertAfter vbCr & vbCr & sText

For Each eNote In ActiveDocument.Endnotes         Set aRange = eNote.Reference         aRange.MoveStart unit:=wdSentence, Count:=-1         aRange.MoveEnd unit:=wdSentence         sText = aRange.Text         rText = eNote.Range.Text         With eNote.Reference.Characters.First             .Collapse             .InsertCrossReference wdRefTypeEndnote, _               wdEndnoteNumberFormatted, eNote.Index             eRef = .Characters.First.Fields(1).Result             Selection.Start = eNote.Reference.Start - Len(eRef)

Selection.End = eNote.Reference.Start             Selection.Delete         End With         Call WriteNewdoc(newDoc, sText, rText, eRef, "Endnote Text")

Next eNote

newDoc.Activate End Sub

Sub WriteNewdoc(newDoc As Document, sText As String, rText As String, _        eRef As String, aStyle As String)

Dim sText1 As String     Dim sText2 As String     Dim dRange As Range     Dim k As Long     Dim curDoc As Document

Set curDoc = ActiveDocument     newDoc.Activate     k = InStr(sText, Chr(2))

If k = 1 Then sText = Mid(sText, 2) 'in case previous sentence has note     sText = Trim(sText)

k = InStr(sText, Chr(2))

If k = 0 Then         sText = sText & Chr(2)

k = Len(sText)

End If     If k > 1 Then         sText1 = Left(sText, k - 1)

Else         sText1 = ""

End If     If k = Len(sText) Then         sText2 = ""

Else         sText2 = Mid(sText, k + 1)

End If     If Len(sText2) > 0 Then         If Mid(sText2, Len(sText2), 1) = Chr(13) Then             sText2 = Left(sText2, Len(sText2) - 1)

End If     End If     Set dRange = newDoc.Content     dRange.Collapse Direction:=wdCollapseEnd     dRange.Select     With Selection         .InsertAfter vbCr & sText1         .Font.Superscript = False         .Collapse Direction:=wdCollapseEnd         .InsertAfter eRef         .Font.Superscript = True         .Collapse Direction:=wdCollapseEnd         .InsertAfter " " & sText2 & vbCr         .Font.Superscript = False         .Collapse Direction:=wdCollapseEnd         .InsertAfter eRef         .Font.Superscript = True         .Collapse Direction:=wdCollapseEnd         .InsertAfter " " & rText & vbCr & vbCr         .Font.Superscript = False         .Style = aStyle     End With     curDoc.Activate End Sub

이것은 (다시) 단지 시작점입니다. 문서에서 매크로를 테스트하고 조정하여 예상 한대로 작동하는지 확인해야합니다.

이러한 매크로를 개발하는 데 도움이되는 추가 리소스를 찾고 있다면이 책을 사용해 볼 수 있습니다. 이것은 공짜이며 특정 목적에 맞게 조정할 수있는 몇 가지 매크로 (또는 예제)가있을 수 있습니다.

http://www.archivepub.co.uk/book.html

시간이 지남에 따라 매크로가 상당히 복잡 해지더라도 놀라지 마십시오. 이것은 인간이 비교적 적은 생각으로 할 수있는 작업을 수행하기 위해 매크로를 만들 때마다 예상됩니다.

_ 참고 : _

이 페이지 (또는 WordTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / wordribbon-WordTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_WordTips_는 비용 효율적인 Microsoft Word 교육을위한 소스입니다.

(Microsoft Word는 세계에서 가장 인기있는 워드 프로세싱 소프트웨어입니다.)이 팁 (12724)은 Microsoft Word 2007, 2010, 2013, 2016, 2019 및 Office 365의 Word에 적용됩니다.