it-swarm-ja.com

生のMicrosoftWordフィールドコードを別のテキストドキュメントにコピーするにはどうすればよいですか?

フィールドコードを含むWord文書からテキストをコピーして、別のアプリケーションに貼り付けたときに、フィールドコードが生のテキストとして残るようにすることは可能ですか?

This is about whales { XE "Cetations:Whales" }. This is about dolphins { XE "Cetations:Dolphins" }.

フィールドコードを取り除くのではなく?

1
Faye Dyce

押す Alt+F9 フィールドコードを表示するには、中括弧内のすべてのテキストを強調表示します{ }。次に、このテキストをコピーして貼り付けることができます。

すべての作業を行うために誰かが書いたマクロへのリンクは次のとおりです。 フィールドコードのコピーと貼り付け

1
WireGuy

ドキュメントにマクロを追加し、テキストを選択して、マクロを実行します。これで、フィールドコードをクリップボードにコピーできます。

追伸:Office2010で ALT+F9 フィールドコードを表示するために使用されます。

Sub StuffFieldCode()
    Dim sField As String
    Dim sTextCode As String
    Dim bSFC As Boolean
    Dim MyData As DataObject
    Dim sTemp As String
    Dim J As Integer

    Application.ScreenUpdating = False

    If Selection.Fields.Count = 1 Then
        bSFC = Selection.Fields.Item(1).ShowCodes
        Selection.Fields.Item(1).ShowCodes = True
        sField = Selection.Text
        sTextCode = ""
        For J = 1 To Len(sField)
            sTemp = Mid(sField, J, 1)
            Select Case sTemp
                Case Chr(19)
                    sTemp = "{"
                Case Chr(21)
                    sTemp = "}"
                Case vbCr
                    sTemp = ""
            End Select
            sTextCode = sTextCode & sTemp
        Next J

        Set MyData = New DataObject
        MyData.SetText sTextCode
        MyData.PutInClipboard

        Selection.Fields.Item(1).ShowCodes = bSFC
    End If

    Application.ScreenUpdating = True
End Sub
0
integratorIT

TWood のコメントは正しいです。 integratorIT のソリューションでは、すべてのフォーマットが失われます。次のマクロFieldToTextは、フォーマットに触れることなく、ドキュメント内のすべてのフィールドを生のテキストとしてフィールドコードに置き換えます。

2番目のマクロTextToFieldは、逆の方法です。つまり、フィールドへの生のコードです。パターンを探します{ * }そしてそれをフィールドに変換しようとします。最初のマクロから挿入されたフィールドの生のテキストに対しては機能しますが、テキスト内のどこかに中括弧と空白の組み合わせがあり、(以前の)フィールド関数を示さない場合、予期しない結果が生じる可能性があります。

Sub FieldToText()
    'Selection.HomeKey Unit:=wdStory            ' to start from top of document
    ActiveWindow.View.ShowFieldCodes = True
    Do
        With Selection.Find
            .Text = "^d"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute
        If Selection.Find.Found = False Then Exit Do

        Selection = "{ " & Mid(Selection, 3, Len(Selection) - 2 - 2) & " }"
        Selection.Move wdCharacter, 1
    Loop While True
End Sub
Sub TextToField()
    Dim code As String
    'Selection.HomeKey Unit:=wdStory            ' to start from top of document
    Do
        With Selection.Find
            .Text = "\{ * \}"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = True
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute
        If Selection.Find.Found = False Then Exit Do

        code = Mid(Selection, 3, Len(Selection) - 2 - 2)
        Selection.Cut
        Selection.InsertAfter (code)
        Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, PreserveFormatting:=False

        Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
        Selection.MoveRight Unit:=wdWord, Count:=1

    Loop While True
End Sub
0
Traveler