28. januar 2004 - 13:08
Der er
4 kommentarer og
2 løsninger
Fejl! Ukendt argument for parameter
Vi er i gang med, at opgradere fra Office 97 til Office 2003.
Dette giver desværre nogle problemer, hvad angår vores skabeloner.
Alle steder, hvor vi har brugt "automatisk" felter står der "Fejl! Ukendt argument for parameter", hvis de åbnes med Word 2003.
Vi har lokaliseret fejlen til, at være den bagved liggende kode i Word, som fra 97 til 2003 er skiftet fra dansk til engelsk.
Vi har konstrueret et VBA script, som låser skabelonen op, viser felter og laver en søg/erstat af felterkoder, f.eks. "førstestort" bliver til "FirstCap" osv. osv.
I nogle tilfælde virker dette, men andre gange skal vi fysisk ind og genoprette feltet med de nye engelske betegnelser.
Er der nogen, som har været ude for dette, som kan yde lidt assistance. Evt. komme med en bedre "løsning" end vi har.
28. januar 2004 - 22:49
#3
Jkrons: Linket på siden virker ikke, så venter til, at høre fra M$ om dette, så jeg kan få testet makroen af.
11. februar 2004 - 14:34
#4
Jkrons: Jeg har self fundet løsningen, men eftersom dit link gav mig en af koderne, som jeg skulle bruge får du 50 point for din hjælp...
Jeg smider lige koden her, så du kan bruge den selv, hvis du har lyst. Der er stadig et par små fejl og koden er ikke optimeret, så kunne sikkert være "pænere".
------------------
Sub Felter()
'
' Felter Makro
' Denne makro søger efter Word97 felter med danske betegnelser og ændre dem til engelske Word200x format.
'
Application.ScreenUpdating = False
Application.DisplayAlerts = wdAlertsNone
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If
If ActiveWindow.View.ShowFieldCodes = False Then
ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes
End If
' Søg og erstat alle danske betegnelser med engelske.
Call DoReplace
Selection.WholeStory
Selection.Fields.Update
' Søg og erstat alle danske betegnelser med engelske i Hovedet af dokumentet
For i = 1 To 2
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Call DoReplace
Selection.WholeStory
Selection.Fields.Update
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext
Next
Selection.HomeKey Unit:=wdStory
' Søg og erstat alle danske betegnelser med engelske i foden af dokumentet
For i = 1 To 2
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Call DoReplace
Selection.WholeStory
Selection.Fields.Update
ActiveWindow.ActivePane.View.Type = wdPrintView
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext
Next
If ActiveWindow.View.ShowFieldCodes = True Then
ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes
End If
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = wdAlertsAll
End Sub
Sub DoReplace()
Dim SearchFields, ReplaceFields, i
SearchFields = Array ("alfabetisk", "arabertal", "initstort", "mængdetekst", "valutatekst", "førstestort", "småbogstav", "ordenstal", "ordenstekst", "Romertal", "stortbogstav", "Fletformat", "Tegnformat")
ReplaceFields = Array("alphabetic", "Arabic", "Caps", "CardText", "DollarText", "FirstCap", "Lower", "Ordinal", "OrdText", "Roman", "Upper", "Mergeformat", "Charformat")
For i = 0 To UBound(SearchFields)
Selection.HomeKey Unit:=wdStory
With Selection.Find
.Text = SearchFields(i)
.Replacement.Text = ReplaceFields(i)
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next i
End Sub