Her er en kode der løser problemet. Den er lidt omfattende, men det er fordi den løser alle andre lignende problemer *SS*
Klip den ind i et modul i din normal.dot og køre den første makro (KonverterDanskeFeltkodeparametre) med din XP skabelon som det aktive dokument.
Public Sub KonverterDanskeFeltkodeparametre()
Dim objDoc As Document
Dim objComment As Comment
Dim objComments As Comments
Dim objEndNotes As Endnotes
Dim objEndNote As Endnote
Dim objFootNotes As Footnotes
Dim objFootNote As Footnote
Dim objShapes As Shapes
Dim objShape As Shape
Dim objTextRange As Range
Dim objSections As Sections
Dim objSection As Section
Dim objHeaderFooters As HeadersFooters
Dim objHeaderFooter As HeaderFooter
On Error GoTo ErrorHandler
If Application.Documents.Count < 1 Then Exit Sub ' if no documents then return
StatusBar = "Oversætter danske feltkodeparametre til engelsk......"
Application.ScreenUpdating = False
' set bookmark to return to when finish
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="Return"
.ShowHidden = True
End With
Set objDoc = ActiveDocument
' convert fieldcodes in the main text area
Call ConvertFieldCode(objDoc.Fields)
' convert comments
Set objComments = objDoc.Comments
For Each objComment In objComments
Call ConvertFieldCode(objComment.Range.Fields)
Next objComment
' convert endnotes
Set objEndNotes = objDoc.Endnotes
For Each objEndNote In objEndNotes
Call ConvertFieldCode(objEndNote.Range.Fields)
Next objEndNote
' convert footnotes
Set objFootNotes = objDoc.Footnotes
For Each objFootNote In objFootNotes
Call ConvertFieldCode(objFootNote.Range.Fields)
Next objFootNote
' convert textframes
Set objShapes = objDoc.Shapes
For Each objShape In objShapes
If objShape.TextFrame.HasText Then
Set objTextRange = objShape.TextFrame.TextRange
Call ConvertFieldCode(objTextRange.Fields)
End If
Next objShape
' convert fieldcodes in the headers and footers
Set objSections = objDoc.Sections
For Each objSection In objSections
' loop through all headers in this section
Set objHeaderFooters = objSection.Headers
For Each objHeaderFooter In objHeaderFooters
Call ConvertFieldCode(objHeaderFooter.Range.Fields)
Next objHeaderFooter
' loop through all footers in this section
Set objHeaderFooters = objSection.Footers
For Each objHeaderFooter In objHeaderFooters
Call ConvertFieldCode(objHeaderFooter.Range.Fields)
Next objHeaderFooter
Next objSection
Application.ScreenUpdating = True
StatusBar = "Feltkodeparametre er nu oversat"
Exit Sub
ErrorHandler:
MsgBox "Det er opstod en fejl under oversættelsen af feltkodeparametrene!" & vbCrLf & "Fejlnr: " & Err.Number & " " & Err.Description, vbCritical, "Fejl"
End Sub
Sub ConvertFieldCode(fldFields As Fields)
Dim fldField As Field
Dim txtOrgFieldCode As String, _
txtNewFieldCode As String
For Each fldField In fldFields
txtOrgFieldCode = fldField.Code.Text
txtNewFieldCode = Replace(txtOrgFieldCode, "FLETFORMAT", "MERGEFORMAT ", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "niveau", "Level", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "Arabertal", "Arabic ", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "Initstort", "Caps ", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "Førstestort", "Firstcap ", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "Stortbogstav", "Upper ", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "Småbogstav", "Lower ", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "ALFABETISK", "ALPHABETIC ", , , vbBinaryCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "Alfabetisk", "Alphabetic ", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "Mængdetekst", "CardText ", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "Valutatekst", "Dollartext ", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "Ordenstekst", "OrdText ", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "Ordenstal", "Ordinal ", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "ROMERTAL", "ROMAN ", , , vbBinaryCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "Romertal", "Roman ", , , vbTextCompare)
txtNewFieldCode = Replace(txtNewFieldCode, "Tegnformat", "Charformat ", , , vbTextCompare)
' Update fieldcode if it has been translated to english
If txtNewFieldCode <> txtOrgFieldCode Then
fldField.Code.Text = txtNewFieldCode
fldField.Update
End If
Next fldField
Set fldField = Nothing
End Sub