24. oktober 2010 - 10:48Der er
7 kommentarer og 1 løsning
Macro i word 2007
Jeg er ved at lave et Word dokument som skal bruges til en lang række enslydende analyser.
En del af dokumentet består af en række felter som jeg har benævnt R100, R101 .... til R190. I disse felter skal en række udsagn besvares med "L", "M" eller "H".
Afhængig af, om der er svaret "H" til mindst et udsagn, skal der være et bestemt afsnit senere i dokumentet. Det samme gælder hvis der er svaret "M" til mindst et udsag, skal der være et bestemt afsnit senere i dokumentet. (De to afsnit er ikke ens).
Er det nødvendigt at lave en betinget sætning for hver R100 til R190 for udsagn "M" og "H", eller er det muligt at lave en betinget sætning, som i et hug gennemløber om der er mindst et "H" i R100 til R190.
Const T31 = "Vi har identificeret følgende områder/poster med betydelige risici (Niveau 3 = Høj) for væsentlig fejlinformation:" & vbCr & vbCr Const T33 = "Vi har på disse områder vurderet udformningen af virksomhedens eventuelle tilknyttede kontroller og konstateret, om de er implementeret." Dim T32 As String
Const T21 = "Vi har endvidere identificeret følgende områder/poster med risici (niveau 2 = Mellem) for væsentlig fejlinformation:" & vbCr & vbCr Dim T22 As String Public Sub OpbygBemærkninger() Dim ff As FormField, antalH As Long, antalM As Long, antalL As Long Dim bm As String, vTekst As String, lTekst As String antalH = 0 antalM = 0 antalL = 0
T32 = "" T22 = ""
For Each ff In ActiveDocument.FormFields bm = ff.Name
If bm <> "" Then r = ff.Result
If ff.Range.Text = "H" Then ff.Select Selection.Font.Bold = True 'FED anvendes som temporær identifikation - findKoordinatTekster vTekst, lTekst T32 = T32 & vTekst & " (" & lTekst & ")" + vbCr + vbCr
antalM = antalM + 1 Else If ff.Range.Text = "L" Then antalL = antalL + 1 End If End If End If End If Next
Rem Gå til slutningen af dokumentet Selection.EndKey Unit:=wdStory Selection.Font.Size = 10
If antalH > 0 Then Selection.TypeText Text:=T31 Selection.Font.Bold = True Selection.TypeText Text:=T32 Selection.Font.Bold = False Selection.TypeText Text:=T33 Selection.TypeParagraph Selection.TypeParagraph End If
If antalM > 0 Then Selection.TypeText Text:=T21 Selection.Font.Bold = True Selection.TypeText Text:=T22 Selection.Font.Bold = False
Selection.TypeParagraph Selection.TypeParagraph End If End Sub Private Sub findKoordinatTekster(vTekst, lTekst) Dim kol As Integer, ræk As Integer, cc As String With ActiveDocument.Tables(2) For ræk = 3 To .Rows.Count .Cell(ræk, 2).Select
For kol = 2 To 12 Selection.MoveRight Unit:=wdCell a = Selection.Range.Text If Selection.Font.Bold > 0 Then vTekst = .Cell(ræk, 2).Range.Text vTekst = Left(vTekst, Len(vTekst) - 2)
lTekst = LCase(Replace(.Cell(1, kol + 1).Range.Text, vbCr, "")) lTekst = UCase(Left(lTekst, 1)) & Mid(lTekst, 2, Len(lTekst) - 2) Selection.Font.Bold = 0 Exit Sub Stop End If Next kol Next ræk End With End Sub
Det var så lidt. Hvis det var meningen at jeg skulle have point - så fik jeg dem ikke. Du tog dem selv.
Jeg går ud fra det skyldes begynderproblemer.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.