Avatar billede hnteknik Novice
20. juli 2011 - 14:26 Der er 6 kommentarer og
1 løsning

Indsættelse af tekst elementer i en rapportskabelon

Ud fra en given rapportskabelon skal jeg have lavet noget VBA, som kan indsætte op til flere foruddefinerede tekst afsnit som  logisk kan være fordelt på f.eks. 8 hovedkategorier med underkategorier i 1 til 2 niveuaer.

Som gammel SQL mand ville jeg foretrække at hente det via en menu i WORD fra f.eks. Access. jeg fornemmer dog at brugere er mere jordnære og vil gerne have tekster ligge synlige for WORD docs i f.eks. undermapper og det er det, som man læser ind. Teksten skal ikke linkes men indsættes permanent. hvis fejl slettes det og så for fra.

Jeg forestiller mig, at man fra et sted i teksten i skabelonen fremkalder en menu hvorfra man kaskadevis vælger den eller de tekst elementer, der skal sætttes ind. Fordelen ved at vælge en ren WORD løsning er nok alene, at teksten kan være delvist formateret med afsnitheader etc.

jeg søger inspiration til en effektiv løsning af opgaven. er der nogen, der kan henvise til gode løsninger af tilsvarende problemløsninger? Min hånd er nok mest sikker til Access /ASP VBA
Avatar billede supertekst Ekspert
20. juli 2011 - 14:45 #1
Tekstafsnit kunne evt. lagres i et antal tabeller i et Word-dokument og således hentes derfra - evt. via en Userform..
Avatar billede hnteknik Novice
20. juli 2011 - 15:02 #2
har du et eks. på hvordan det gøres ?
Kunne være smart, hvis man gemte hver (Under)kategori i sit dokument.
Avatar billede supertekst Ekspert
20. juli 2011 - 16:14 #3
Vender tilbage senere...
Avatar billede supertekst Ekspert
21. juli 2011 - 00:17 #4
Selve VBA koden i Rapportskabelon (p.t. alm. Docx)
Basistekster er i separat fil i et antal tabeller.
Hele modellen kan sendes - send en mail - @-adresse under min profil.
--------------------------------


Const sti = "C:\Users\peter\Desktop\Rapport\"
Dim btDoc As Object
Dim ix As Byte, teksten As String
Private Sub ComboBox1_Change()
    ix = Me.ComboBox1.ListIndex + 1
    teksten = btDoc.ActiveDocument.Tables(ix).Cell(2, 1)
    Me.TextBox1 = teksten
End Sub
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Selection.Text = btDoc.ActiveDocument.Tables(ix).Cell(2, 1)
End Sub
Private Sub UserForm_activate()
    houseKeeping
End Sub
Private Sub userform_terminate()
    lukDoc
End Sub
Private Sub houseKeeping()
On Error GoTo fejl
    Set btDoc = CreateObject("Word.Application")
   
    With btDoc
        .Documents.Open sti + "basistekster.docx"
        indsætOverskrifter
    End With
   
    Exit Sub
   
fejl:
    Stop
    Resume Next
    lukDoc
End Sub
Private Sub indsætOverskrifter()
Dim antalTabeller As Byte
    antalTabeller = btDoc.ActiveDocument.Tables.Count
   
    Me.ComboBox1.Clear
       
    If antalTabeller > 0 Then
        With btDoc.ActiveDocument
            For t = 1 To .Tables.Count
                os = .Tables(t).Cell(1, 1)
                Me.ComboBox1.AddItem Left(os, Len(os) - 2)
            Next t
        End With
    End If
End Sub
Private Sub lukDoc()
On Error Resume Next
    btDoc.ActiveDocument.Close
    btDoc.Quit
    Set btDoc = Nothing
End Sub
Avatar billede hnteknik Novice
21. juli 2011 - 09:05 #5
Supertext> har sendt dig en mail. Gælder mig til at afprøve. Ser en fordel i tabel ideen, hvor man relativ nemt kan vedligeholde teksterne. Kører stadig i 2003 miljø, men regner med at det funker der også.
Avatar billede supertekst Ekspert
21. juli 2011 - 12:52 #6
Et svar..
Avatar billede hnteknik Novice
21. juli 2011 - 13:12 #7
Tak for konstruktiv hjælp
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
Tag et kursus i Word og øg effektiviteten

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