title image


Smiley Code
Hallo !



So, ich habe mir das nochmal angeguckt.

Oder hattest Du's schon?

Kopiere folgenden Code in die Normal.dot.

Erklärung im Code.



Gruß, Chrisir









Option Explicit





' Modul mit zwei Programmen.

' Das erste Programm MakroErstelleVorlage()

' wird nur selten zur Wartung aufgerufen.

' Es erstellt eine Dokumentenvorlage mit

' Dokumentenvariablen und Felder, die auf

' diese Dokumentenvariablen verweisen.

' Dokumentenvariablen und Felder werden mit Testdaten

' gefüllt.

'

' Die Felder können dann mit Text (z.B. Name der Krankenkasse,

' Adresse Patient) ergänzt werden und auch anders angeordnet werden

' (Menü Tabelle | Umwandeln | Tabelle in Text).

' Dann wird die Vorlage gespeichert. Achtung: Auch ein Leerzeichen kann ein Feld sein.

' Es ist dann aber nicht grau hinterlegt (auch wenn Menü Extras | Optionen, Ansicht

' Feldschattierung "Immer" an ist); schalten Sie also die Sonderzeichen an.

' Oder passen Sie im Programm MakroErstelleVorlage den Testdatensatz an, dass keine zwei

' Fragezeichen nacheinander stehen (= leeres Feld). Sie wechseln mit Alt-F9 zwischen

' Feldfunktion und Feldwert (Die Punkte wandeln sich in einen Ausdruck

' wie DOCVARIABLE Eintrag12 \* MERGEFORMAT).

'

' Kommt nun ein neuer Datensatz, so wird die Vorlage geöffnet; dadurch

' entsteht ja ein neues Dokument mit gleichem Aussehen wie die Vorlage (Kopie).

' Um nun die Felder auf den neuen Datensatz zu aktualisieren, kommt das zweite

' Programm MakroVariablenEintragen zum Einsatz. Es schreibt die neuen Feldwerte

' in die Dokumentenvariablen und aktuelisiert die Felder, die auf

' diese Dokumentenvariablen verweisen (allerdings nicht in Kopf- und Fußzeile etc.).

' Dann wird das neue Dokument gespeichert (Abrechnung Patient XY).

'

' Dieses zweite Programm MakroVariablenEintragen wird also sehr oft benutzt.

'

' Die DokumentenVariablen heissen Eintrag0, Eintrag1 usw. bis Eintrag16.

' Das zweite Programm MakroVariablenEintragen führt Tests durch, ob das Dokument,

' was geladen ist, korrekt ist, also ob es die Variablen und Felder enthält.

' Es bricht aber nicht ab, wenn dies nicht gegeben ist (nur wenn gar kein Dokument offen ist).

' Auch wenn es das falsche Dokument war, enthält dieses deshalb danach die Variablen,

' jedoch unsichtbar, da ohne die Felder.

'



Sub MakroErstelleVorlage()

    '

    ' Vorlage mit Feldern und Dokumentenvariablen erstellen

    '



    Const strTitel = "Dokumentenvorlage erstellen"



    Dim arrMeinArray()          As String

    Dim strEingeleseneDaten     As String

    Dim intObergrenze           As Integer

    Dim intI                    As Integer

    Dim strDocVariablenName     As String

    Dim boolMitVarNamenAusgeben As Boolean

    Dim intAntwort              As Integer





    intAntwort = MsgBox("Es wird eine neue Dokumentenvorlage erstellt, die als Grundlage späterer Dokumente dient. Dies ist ein Wartungsprogramm. Wollen Sie die Variablennamen mit ausgeben? ", _

                        vbYesNoCancel, _

                        strTitel)

    

    Select Case intAntwort

        Case vbYes

            boolMitVarNamenAusgeben = True

        Case vbNo

            boolMitVarNamenAusgeben = False

        Case vbCancel

            End

        Case Else

            MsgBox "Programmfehler", vbCritical, strTitel

    End Select

    

    ' Datensatz in dieser Form ausgegeben

    strEingeleseneDaten = "Ratlosen Krankenkasse?1234567?47011?0123456789?0077?1??Rudi??Ratlos?11111749?Ratlosstrasse 4711??43123?Frageheim?0606?"

    

    ' Neue Vorlage:

    Documents.Add _

        NewTemplate:=True, _

        DocumentType:=0

    

    arrMeinArray = Split(strEingeleseneDaten, "?", -1)

    

    intObergrenze = UBound(arrMeinArray)

    

    Selection.TypeParagraph

    Selection.TypeParagraph

    Selection.TypeParagraph

    Selection.EndKey unit:=wdStory, Extend:=wdMove

    

    ActiveDocument.Tables.Add Selection.Range, 1, 1

    

    For intI = 0 To intObergrenze

    

        strDocVariablenName = "Eintrag" & Trim(Str(intI))

        If arrMeinArray(intI) = "" Then arrMeinArray(intI) = " "

        ActiveDocument.Variables.Add strDocVariablenName, arrMeinArray(intI)

        ActiveDocument.Tables(1).Rows.Last.Cells(1).Range.Select

        

        If boolMitVarNamenAusgeben Then

            Selection.TypeText strDocVariablenName & ": "

            ActiveDocument.Tables(1).Rows.Last.Cells(1).Range.Select

            Selection.Collapse wdCollapseEnd

            Selection.MoveLeft unit:=wdCharacter, Count:=1

        End If

        

        Selection.Collapse wdCollapseStart

                

        ActiveDocument.Fields.Add _

                      Range:=Selection.Range, _

                      Type:=wdFieldDocVariable, _

                      Text:=strDocVariablenName

        

        ActiveDocument.Tables(1).Rows.Add

    

    Next intI

    

End Sub

    

     

Sub MakroVariablenEintragen()

    '

    ' Neuer Datensatz: Variablen belegen und Felder aktualisieren.

    ' Die Variablen und Felder sollten schon existieren.

    '



    Const strTitel = "In das Formular neuen Patienten eintragen"



    Dim arrMeinArray()          As String

    Dim strEingeleseneDaten     As String

    Dim intObergrenze           As Integer

    Dim intI                    As Integer

    Dim strDocVariablenName     As String

    Dim varMyVariable           As Variable

    Dim intCountVars            As Integer

    



    ' Datensatz in dieser Form ausgegeben

    strEingeleseneDaten = "Antwort-Krankenkasse?1234567?47011?0123456789?0077?1??Werner??Beraten?11111749?Beratenstrasse 4711??43123?Antwortheim?0606?"



    ' Ggf. Abbruch

    If Documents.Count = 0 Then

        MsgBox "Kein Dokument offen." & _

               vbNewLine & _

               "Bitte öffnen Sie das Dokument mit den fertigen Feldern, " & _

               vbNewLine & _

               "was durch das Programm ""MakroErstelleVorlage"" erstellt wurde. " & _

               vbNewLine & _

               "Abbruch.", _

               vbInformation, _

               strTitel

        End

    End If

    

    arrMeinArray = Split(strEingeleseneDaten, "?", -1)

    intObergrenze = UBound(arrMeinArray)

    

    ' Tests, ob das Dokument korrekt ist.   ***

    

    ' Wenn z.B. ein Feld gelöscht wurde, die Abfrage

    ' "If ActiveDocument.Fields.Count < intObergrenze Then" ändern in

    ' "If ActiveDocument.Fields.Count < intObergrenze - 1 Then" oder

    ' "If ActiveDocument.Fields.Count < intObergrenze - 4 Then" etc.

    If ActiveDocument.Variables.Count < intObergrenze Then

        MsgBox "Wahrscheinlich falsches Dokument geöffnet: " & _

               "Die Anzahl der Variablen beträgt " & _

               ActiveDocument.Variables.Count & _

               "; erwartet waren " & _

               intObergrenze & ".", _

               vbInformation, _

               strTitel

    End If

    

    If ActiveDocument.Fields.Count < intObergrenze Then

        MsgBox "Wahrscheinlich falsches Dokument geöffnet: " & _

               "Die Anzahl der Felder beträgt " & _

               ActiveDocument.Fields.Count & _

               "; erwartet waren " & _

               intObergrenze & _

               ".", _

               vbInformation, _

               strTitel

    End If

    

    ' Grob die Namen der Variablen prüfen

    ' (falls es andere Variablen waren, die eben gezählt worden sind)

    For Each varMyVariable In ActiveDocument.Variables

        If Left(varMyVariable.Name, Len("Eintrag")) = "Eintrag" Then

            intCountVars = intCountVars + 1

        End If

    Next varMyVariable

    

    If intCountVars < intObergrenze Then

        MsgBox "Wahrscheinlich falsches Dokument geöffnet: " & vbNewLine & _

               "Die Anzahl der Variablen passenden Namens beträgt " & _

               intCountVars & _

               "; erwartet waren " & _

               intObergrenze & _

               ".", _

               vbInformation, _

               strTitel

    End If

    

    ' Ende der Tests  ***

    

    ' Start der Arbeit  ***

    

    ' Variablenwerte setzen

    For intI = 0 To intObergrenze

    

        strDocVariablenName = "Eintrag" & Trim(Str(intI))

        If arrMeinArray(intI) = "" Then arrMeinArray(intI) = " "

        ActiveDocument.Variables(strDocVariablenName).Value = arrMeinArray(intI)

    

    Next intI

    

    ' Felder aktualisieren

    ActiveDocument.Fields.Update



End Sub









Code eingefügt mit Syntaxhighlighter 2.2





geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: