マクロを使用した手動プロセスの自動化(Microsoft Word)
ジェイソンは、学術ロージャーナルの学生編集者です。出版プロセスの一環として、彼はすべての文の盗用と正確さ、およびすべての引用をチェックして、適切なフォーマットとサポートを確保する必要があります。
これは基本的に、すべての文が脚注に配置された引用によってサポートされなければならないことを意味します。現在、スタッフは、著者の原稿(Word文書)からすべてのテキスト文、脚注、および脚注番号を手動でコピーして、スタッフ編集者のWord文書に貼り付け、チェックに使用しています。ジェイソンは、「脚注番号」、「記事ドキュメントからの文」、「元の脚注コンテンツ」を原稿ソースドキュメントからワークシートドキュメントにコピーするこのプロセスを自動化する方法があるかどうか疑問に思います。
ジェイソンが言及した各タスクは、いくつかの苛立たしい例外を除いて、プログラムで実行できます。 VBAで脚注と文末脚注のコレクションをステップスルーし、それらから情報を抽出することはそれほど難しくありません。次に、この情報を、エディターのワークシートとして使用できる新しいドキュメントに移動できます。苛立たしい部分は、脚注と文末脚注の番号が動的であるため、アクセスがそれほど簡単ではないことです。
この刺激物の完全な議論はこのサイトで見つけることができます:
http://www.vbaexpress.com/forum/showthread.php?31231
あるドキュメントから別のドキュメントに情報を転送するためにマクロを作成する方法は、主に、作成者のドキュメント内の情報の特性に大きく依存します。たとえば、著者のドキュメントには、文の後に1つまたは2つのスペースが含まれていますか?文ごとに複数の脚注を許可しますか?脚注に加えて文末脚注も使用できますか?テーブルは含まれていますか?
重要なのは、マクロの開発に影響を与える可能性のある考慮事項がいくつもあるということです。つまり、マクロは、使用しているソースドキュメントに合わせて微調整する必要があります。つまり、多くのテストが必要になります。ただし、出発点として、次のマクロを検討してください。文、脚注、および文末脚注(ある場合)をソースドキュメントから新しいドキュメントにコピーします。
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_は、費用効果の高いMicrosoftWordトレーニングのソースです。
(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(12724)は、Microsoft Word 2007、2010、2013、2016、2019、およびOffice365のWordに適用されます。