Avatar billede mrkr Juniormester
27. september 2012 - 14:21 Der er 1 kommentar og
1 løsning

Slette linjer i word udfra kode i Excel

JEg har denne her kode som starter en skabelonfil op i word og indsætter en masse tekster og tal udfra nogle bookmarks.

Det kører faktisk meget godt.
Når koden er færdig med at indsætte er der nogle linjer som er tomme.
Dem vil jeg gerne have slettet hvis der er mere end 3 ENTER efter hinanden.

Jeg har fundet en lille kode der gør det når jeg kører fra Word.
Den ser således ud.

Do
    With Selection.Find
            .Text = "^p^p^p"
            .Replacement.Text = "^p"
            .Forward = True
            .Wrap = wdFindContinue
    End With
    Loop Until Selection.Find.Execute(Replace:=wdReplaceAll) = False

JEg vil meget gerne have den til at køre indefra min kode i excel som starter det hele op og flette informationerne, men jeg kan ikke få den til at "forstå" at den skal løbe koden igennem i word og ikke i excel.

JEg vil mene at det har noget med at fortælle at det er "gwdDoc", men kan ikke hitte ud af det.

Er der nogen der kan se hvor jeg misser detaljen :-)

Den samlede kode ser således ud:


Sub Word_export_test()
    Dim sFileToOpen As String
    Dim bWordStartedByMe As Boolean
    Dim resultat, aktiver, egenkapital, udbytte
   
    bWordStartedByMe = False
    sFileToOpen = "c:\data\flettefil.doc"
    Application.ScreenUpdating = False
    Sheets("Stam").Range("revprotokol_til") = Sheets("Stam").Range("revprotokol_fra") + 2
    On Error GoTo ShitHappens
   
    ' Bruger Word hvis Word er åben ellers fejl
    Set gwdApp = GetObject(, "Word.Application")
    gwdApp.Visible = True
    gwdApp.Activate
   
    Set gwdDoc = gwdApp.Documents.Open(Filename:=sFileToOpen)
       
    gwdDoc.Bookmarks("bm01").Range.Text = "Velkommen"
    gwdDoc.Bookmarks("bm02").Range.Text = "klik her"
    'osv.
   
   

   
    '**** Denne kodestump skal gerne køre ude i word-dokumentet
    '**** men jeg kan ikke få den til det.
   
    Do
    With Selection.Find
            .Text = "^p^p^p"
            .Replacement.Text = "^p"
            .Forward = True
            .Wrap = wdFindContinue
    End With
    Loop Until Selection.Find.Execute(Replace:=wdReplaceAll) = False

    '**** Slut på koden som skal køres i word
   
 

 
   
Application.ScreenUpdating = True
GoTo ClearUp
   
ShitHappens:
    Select Case Err.Number
        Case 429
            ' Hvis Word ikke er startet
            Set gwdApp = CreateObject("Word.Application")
            bWordStartedByMe = True
            Resume Next
        Case Else
            Err.Clear
    End Select

ClearUp:
    Set gwdDoc = Nothing
    Set gwdApp = Nothing
End Sub
Avatar billede mrkr Juniormester
30. september 2012 - 16:05 #1
Jeg vil lige nævne at jeg har forsøgt en masse forskelligt. F.esk:

Do
With gwdDoc
    With Selection.Find
            .Text = "^p^p^p"
            .Replacement.Text = "^p"
            .Forward = True
            .Wrap = wdFindContinue
    End With

    Loop Until Selection.Find.Execute(Replace:=wdReplaceAll) = False
end with



Men det virker vist ikke med 2 with.
Avatar billede mrkr Juniormester
05. oktober 2012 - 19:15 #2
øv, det var da et forsøg værd.
Det er jo utrolig hvad I kan løse af problemstillinger herinde :-)

Lukker
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester