Thema Datum  Von Nutzer Rating
Antwort
12.01.2012 22:54:45 Paolo J.
NotSolved
Blau Felder (Fields) in "Wildcards" (Text) umwandeln (VBA, Word)
13.01.2012 18:45:27 Paolo J.
NotSolved

Ansicht des Beitrags:
Von:
Paolo J.
Datum:
13.01.2012 18:45:27
Views:
1247
Rating: Antwort:
  Ja
Thema:
Felder (Fields) in "Wildcards" (Text) umwandeln (VBA, Word)
Option Explicit

Public Sub FieldsToWildcards()
'
' FieldsToWildcards Macro
' Convertes Fields to Wildcards (strings)
' @author Iosif Miclaus
'
Dim pRange As Word.Range
Dim aField As field
Dim currFieldCode As String
Dim wildcard As String
Dim skipNext As Boolean
skipNext = False

Dim mfIfParamsCount1 As Integer
mfIfParamsCount1 = 6
Dim mfIfParamsCount2 As Integer
mfIfParamsCount2 = 7

Dim mfIfParams1 As Variant
Dim param1Pos As Integer
param1Pos = 4

Dim mfIfParams2 As Variant
Dim param2Pos As Integer
param2Pos = 1
Dim param3Pos As Integer
param3Pos = 3
Dim param4Pos As Integer
param4Pos = 5

Dim mfTypePos As Integer
mfTypePos = 2
Dim mfVarStart As Integer
mfVarStart = 13

Dim dqASCIICode As Integer
dqASCIICode = 34


'Loop through all ranges (also header and footer)
For Each pRange In ActiveDocument.StoryRanges
    
    'Loop through all fields in current range
    For Each aField In pRange.Fields
        Set pRange = aField.Code
        currFieldCode = aField.Code
        wildcard = "${"
        
        'IF-MERGEFIELD
        If InStr(1, currFieldCode, "IF") = mfTypePos Then
            'The next mergefield inside the if-mergefield can be skipped
            skipNext = True
                
            'Get parameters for wildcard (second part)
            mfIfParams2 = Split(currFieldCode, Chr(dqASCIICode), mfIfParamsCount2)
                
            'Get parameter(s) for wildcard (first part)
            mfIfParams1 = Split(mfIfParams2(0), " ", mfIfParamsCount1)
                
            'Add first parameter to wildcard
            wildcard = wildcard & Trim(mfIfParams1(param1Pos)) & ";"
            'Add second parameter to wildcard
            wildcard = wildcard & Trim(mfIfParams2(param2Pos)) & ";"
            'Add third parameter to wildcard
            wildcard = wildcard & Trim(mfIfParams2(param3Pos)) & ";"
            'Add fourth parameter to wildcard
            wildcard = wildcard & Trim(mfIfParams2(param4Pos)) & "}"
                
            'MsgBox wildcard
        Else
            If InStr(1, currFieldCode, "MERGEFIELD") = mfTypePos Then
                'MERGEFIELD inside IF-MERGEFIELD
                If skipNext = True Then
                    skipNext = False
                '(normal) MERGEFIELD
                Else
                    skipNext = False
                    wildcard = wildcard & Trim(Mid(currFieldCode, mfVarStart, Len(currFieldCode) - mfVarStart)) & "}"
                    
                    'MsgBox wildcard
                End If
            End If
        End If
        
        'Delete field
        aField.Delete
        
        'Add wildcard insead
        pRange.Collapse wdCollapseStart
        pRange.Text = wildcard
    Next
Next

End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
12.01.2012 22:54:45 Paolo J.
NotSolved
Blau Felder (Fields) in "Wildcards" (Text) umwandeln (VBA, Word)
13.01.2012 18:45:27 Paolo J.
NotSolved