koddump:enhanceindexentries
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| koddump:enhanceindexentries [2011/10/13 16:53] – PglCSQTgcczG 109.230.217.166 | koddump:enhanceindexentries [2011/11/24 20:47] (current) – old revision restored jetthe | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | Caillng all cars, calling all cars, we're ready to make a deal. | + | **Funktionskrav: |
| + | |||
| + | Ändra indexmarkeringar på formen: | ||
| + | **{ XE "EN 789" | ||
| + | till: | ||
| + | **{ XE "EN 789; | ||
| + | |||
| + | Dvs lägga till ett sorteringsvärde för varje indexmarkering och padda ut det till fyra siffror. | ||
| + | |||
| + | |||
| + | |||
| + | Dagens ickeoptade funktion: | ||
| + | |||
| + | <code vb> | ||
| + | Sub EnhanceIndexEntries() | ||
| + | Dim doc As Document | ||
| + | Dim fld As Field | ||
| + | Dim temp As String | ||
| + | Dim temp2 As String | ||
| + | Dim omsg As String | ||
| + | Dim matches | ||
| + | Dim re2, re3 As RegExp | ||
| + | Set re2 = New RegExp | ||
| + | Set re3 = New RegExp | ||
| + | re2.Global = False | ||
| + | re3.Global = False | ||
| + | re2.Pattern = " | ||
| + | re3.Pattern = " | ||
| + | |||
| + | Dim cnt As Integer | ||
| + | cnt = 0 | ||
| + | |||
| + | Set doc = ActiveDocument | ||
| + | For Each fld In doc.Fields | ||
| + | fld.Select | ||
| + | If fld.Type = wdFieldIndexEntry Then | ||
| + | cnt = cnt + 1 | ||
| + | temp = fld.Code | ||
| + | temp2 = re2.Replace(temp, " $1; | ||
| + | temp3 = re3.Replace(temp2, | ||
| + | With Selection.Find | ||
| + | .Text = temp | ||
| + | .Replacement.Text = temp3 | ||
| + | .Forward = True | ||
| + | .Wrap = wdFindStop | ||
| + | .Format = False | ||
| + | .Execute Replace: | ||
| + | End With | ||
| + | End If | ||
| + | Next | ||
| + | Set fld = Nothing | ||
| + | Set doc = Nothing | ||
| + | omsg = " | ||
| + | MsgBox (omgs & cnt) | ||
| + | End Sub | ||
| + | </ | ||
| + | |||
| + | Exempel på paddingfunktion, | ||
| + | <code javascript> | ||
| + | function padNumber(number, | ||
| + | number = new Number(number); | ||
| + | size = parseInt(size); | ||
| + | if(isNaN(size) || isNaN(number)) return number+""; | ||
| + | if(number < Math.pow(10, | ||
| + | number+=Math.pow(10, | ||
| + | return (number+"" | ||
| + | }else{ | ||
| + | return number+""; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | Halvoptad kod, går ~dubbelt så snabbt som den ooptade: | ||
| + | <code vb> | ||
| + | Sub NewEnhanceIndexEntries() | ||
| + | Dim doc As Document | ||
| + | Dim fld As Field | ||
| + | Dim temp As String | ||
| + | Dim temp2 As String | ||
| + | Dim omsg As String | ||
| + | Dim matches As MatchCollection | ||
| + | Dim re3 As RegExp | ||
| + | Set re3 = New RegExp | ||
| + | re3.Global = False | ||
| + | re3.Pattern = " | ||
| + | Dim match As match | ||
| + | Dim mval As String | ||
| + | |||
| + | Dim cnt As Integer | ||
| + | cnt = 0 | ||
| + | |||
| + | Set doc = ActiveDocument | ||
| + | For Each fld In doc.Fields | ||
| + | fld.Select | ||
| + | If fld.Type = wdFieldIndexEntry Then | ||
| + | cnt = cnt + 1 | ||
| + | temp = fld.Code | ||
| + | If (re3.Test(temp) = True) Then | ||
| + | Set matches = re3.Execute(temp) | ||
| + | For Each match In matches | ||
| + | mval = match.Value | ||
| + | Next | ||
| + | |||
| + | Dim size As Integer | ||
| + | mval = Mid(mval, 2) | ||
| + | mval = Left(mval, Len(mval) - 1) | ||
| + | size = 4 | ||
| + | If (Len(mval) < (size + 1)) Then | ||
| + | Do While (Len(mval) < size) | ||
| + | mval = " | ||
| + | Loop | ||
| + | End If | ||
| + | |||
| + | temp2 = Left(temp, Len(temp) - 1) | ||
| + | temp2 = temp2 & ";" | ||
| + | With Selection.Find | ||
| + | .Text = temp | ||
| + | .Replacement.Text = temp2 | ||
| + | .Forward = True | ||
| + | .Wrap = wdFindStop | ||
| + | .Format = False | ||
| + | .Execute Replace: | ||
| + | End With | ||
| + | Else | ||
| + | | ||
| + | End If | ||
| + | End If | ||
| + | Next | ||
| + | Set fld = Nothing | ||
| + | Set doc = Nothing | ||
| + | omsg = " | ||
| + | MsgBox (omsg & cnt) | ||
| + | End Sub | ||
| + | </ | ||
| + | |||
| + | |||
koddump/enhanceindexentries.1318517623.txt.gz · Last modified: 2011/10/13 16:53 by 109.230.217.166
