20. juli 2011 - 14:26Der 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
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
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å.
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.