매크로를 사용하여 수동 프로세스 자동화 (Microsoft Word)
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에 적용됩니다.