Visual Basic Code zur Verwendung des Aktenplan-Outliners in WinWord


Option Explicit

Private Type AzLfdRecord
  AZ As String * 15
  lfdNr As Integer
End Type

Sub AutoNew()
' Die Anweisungen unten bewirken, dass bereits mit der Erstellung eines neuen
' Dokuments auf Basis dieser Dokumentvorlage das Aktenzeichen zugeordnet wird.
' ggf. durch REM oder "'" deaktivieren!

If Tasks.Exists("Aktenplan") Then
  AZzuordnen
  ActiveDocument.Saved = True
End If

End Sub

Public Sub AZzuordnen()

' Mischt ein Aktenzeichen aus dem Aktenplan in ein Textdokument ein.
' für Word Version 2000
' Autor: Christoph Müller (www.must.de)
' Stand: 19.08.99
' Modifikation und Weitergabe erlaubt
'
' Voraussetzungen:
' 1. Aktenplan.exe muß gestartet sein.
' 2. Ein Aktenzeichen muß ausgewählt (markiert) sein.
' 3. Das aktive Dokument muß eine Textemarke "Aktenzeichen" enthalten.

Dim Kanalnummer As Integer
Dim Aktenzeichen As String
Dim AktenzeichenText As String

' Lesen der Aktenplan-Server-Angaben
On Error GoTo EndAz
Kanalnummer = WordBasic.DDEInitiate("Aktenplan", "Aktenplan")
Aktenzeichen = WordBasic.DDERequest$(Kanalnummer, "Aktenzeichen")
AktenzeichenText = WordBasic.DDERequest$(Kanalnummer, "AktenzeichenText")
WordBasic.DDETerminate Kanalnummer
On Error GoTo 0

If Aktenzeichen = "" Then Exit Sub

' Entfernung des Carriage Returns:
If Len(Aktenzeichen) > 1 Then Aktenzeichen = WordBasic.Left$(Aktenzeichen, Len(Aktenzeichen) - 1)
If Len(AktenzeichenText) > 1 Then AktenzeichenText = WordBasic.Left$(AktenzeichenText, Len(AktenzeichenText) - 1)

' Aktenzeichen merken (für Dokumentablage)
On Error Resume Next
ActiveDocument.CustomDocumentProperties.Item("Aktenzeichen").Delete
On Error GoTo 0
ActiveDocument.CustomDocumentProperties.Add _
  Name:="Aktenzeichen", _
  LinkToContent:=False, _
  Type:=msoPropertyTypeString, _
  Value:=Aktenzeichen

' Zuordnung zu Textmarken, falls vorhanden
If WordBasic.ExistingBookmark("Aktenzeichen") = -1 Then
  WordBasic.EditGoTo Destination:="Aktenzeichen"
  WordBasic.Insert Aktenzeichen + "/" + Trim$(Str$(getAzLfdNr(Aktenzeichen)))
'                              ^-- entfernen, falls lfd. Nr. unerwünscht ---^
End If
If WordBasic.ExistingBookmark("AktenzeichenText") = -1 Then
  WordBasic.EditGoTo Destination:="AktenzeichenText"
  WordBasic.Insert AktenzeichenText
End If

EndAz:

End Sub

Public Sub SpeichernMitLfdNrZumAktenzeichen()

' Speichert das aktive Dokument unter dem Aktenzeichen plus laufender Nr. ab.
' Autor: Christoph Müller (www.must.de)
' Stand: 19.08.99
' Modifikation und Weitergabe erlaubt

Dim Aktenzeichen As String

Aktenzeichen = ""
On Error Resume Next
Aktenzeichen = ActiveDocument.CustomDocumentProperties.Item("Aktenzeichen")
On Error GoTo 0

If Aktenzeichen = "" Then
  MsgBox ("Kein Aktenzeichen aktiv.")
  Exit Sub
End If

ActiveDocument.SaveAs (Aktenzeichen + "-" + Trim$(Str$(getAzLfdNr(Aktenzeichen))) + ".doc")

End Sub
Private Function getAzLfdNr(aktuellesAZ As String) As Integer

' Einfache Lösung der laufenden Durchnumerierung zu einem Aktenzeichen.
' Erwartet Aktenzeichen.
' Liefert laufende Nummer zu diesem Aktenzeichen zurück.
' Hinweis: Für die gemeinsame Verwendung die Open-Anweisung auf einen
' entsprechenden Server-Pfad ändern.
' Autor: Christoph Müller (www.must.de)
' Stand: 19.08.99
' Modifikation und Weitergabe erlaubt

Dim AzLfdRecord1 As AzLfdRecord
Dim position As Integer
Dim istEnthalten As Boolean

getAzLfdNr = 0
On Error Resume Next
getAzLfdNr = ActiveDocument.CustomDocumentProperties.Item("lfd. Nummer zum Aktenzeichen")
On Error GoTo 0

If getAzLfdNr <> 0 Then
  Exit Function
End If

istEnthalten = False

Open Options.DefaultFilePath(wdDocumentsPath) + "\AzLfdNr" For Random As #1 Len = Len(AzLfdRecord1)
position = 1
While Not EOF(1)
  Get #1, position, AzLfdRecord1
  If RTrim$(AzLfdRecord1.AZ) = RTrim$(aktuellesAZ) Then
    istEnthalten = True
    AzLfdRecord1.lfdNr = AzLfdRecord1.lfdNr + 1
    getAzLfdNr = AzLfdRecord1.lfdNr
    Put #1, position, AzLfdRecord1
  End If
  position = position + 1
Wend

If Not istEnthalten Then
  getAzLfdNr = 1
  AzLfdRecord1.AZ = aktuellesAZ
  AzLfdRecord1.lfdNr = 1
  Put #1, position, AzLfdRecord1
  getAzLfdNr = 1
End If

Close #1

With ActiveDocument.CustomDocumentProperties
  .Add Name:="lfd. Nummer zum Aktenzeichen", _
    LinkToContent:=False, _
    Type:=msoPropertyTypeNumber, _
    Value:=getAzLfdNr
End With

End Function


[ Home ]  [ Inhaltsverzeichnis ]  [ mailto:mail@must.deAllgemeine Post ]