erik87
Goto Top

Functionen einer Form in Word exportieren

Hallo Forumgemeinde,

ich würde gerne zur Dokumentation meines Programmes alle Funktionen und Subs einer Form in Worddateien packen. Ich hatte mir das so vorgestellt das ich für jede Form oder jedes Objekt einen Ordner anlege und dann jede Sub/funktion einzeln als Worddatei darin ablege. Ich könnte das zwar alles per Hand machen, aber das würde ewig dauern. Gibt es eine Möglichkeit dies über einen Automatismus zu realisieren??? Sehr schön wäre auch wenn gleich die Formatierung des Textes übernommen wird.

Ich arbeite mit Visual Studio 2008 und habe Word 2007.


Mit freundlichsten Grüßen

Content-Key: 165273

Url: https://administrator.de/contentid/165273

Printed on: April 19, 2024 at 03:04 o'clock

Member: mathe172
mathe172 Apr 27, 2011 at 20:40:25 (UTC)
Goto Top
Hallo,

hast du dir mal überlegt, was mit den Variablen passieren soll, die in der Form-Klasse definiert sind und in den Funktionen benutzt werden?

Mathe172
PS.:Das mit den Formatierungen könnte schwierig werden...
Member: erik87
erik87 Apr 27, 2011 at 21:15:00 (UTC)
Goto Top
Hallo,


zum einen soll das Komplette Klassenmodul natürlich auch in eine extra Worddatei. Die Nachbereitung mit den Publics und Strukturen wird kein großer Aufwand, im gegensatz zum Anlegen der einzelnen Dateien. Die Formatierung könnte ich mir per Word-Makro zur not alleine basteln. Viel wichtiger finde ich das "exportieren" in die einzelnen Ordner.


Mfg.
Member: mathe172
mathe172 Apr 28, 2011 at 14:57:36 (UTC)
Goto Top
Hallo,

ich habs zwar noch nicht ganz geschafft, aber schau mal das an:

'Das als Makro in ein Dokument, den Code der Klasse/Form ins Dokument selbst kopieren  
Sub Aufteilen()
Dim SubOderFunction As String
Dim InSubOderFunction As Boolean
    For Each Absatz In ActiveDocument.Paragraphs
    Dim Zeile As String
    Zeile = Left(Absatz, Len(Absatz) - 1)
    Dim Wörter() As String
    Wörter = Split(Zeile, " ")  
        If IsInArray(Wörter, "Sub") Then  
            If Replace(Zeile, " ", "") = "EndSub" Then  
                SubOderFunction = SubOderFunction & Zeile
                MsgBox SubOderFunction
                SubOderFunction = ""  
                InSubOderFunction = False
                Else
                InSubOderFunction = True
            End If
            ElseIf IsInArray(Wörter, "Sub") Then  
            If Replace(Zeile, " ", "") = "EndFunction" Then  
                SubOderFunction = SubOderFunction & Zeile
                MsgBox SubOderFunction
                SubOderFunction = ""  
                InSubOderFunction = False
                Else
                InSubOderFunction = True
            End If
        End If
    If InSubOderFunction Then SubOderFunction = SubOderFunction & Absatz
    Next
End Sub
Function IsInArray(ByRef ZuPrüfendeArray() As String, SuchString As String)
    IsInArray = False
    For Each Element In ZuPrüfendeArray
        If Element = SuchString Then
            IsInArray = True
            Exit Function
        End If
    Next
End Function
Das gibt dir jede Sub oder Function aus, jedoch weiss ich noch nicht, wie ich den Text mit Format kopieren kann.

Mathe172
Member: erik87
erik87 Apr 28, 2011 at 17:22:30 (UTC)
Goto Top
Hi,

also erstmal danke für deine Hilfe. Es erscheint jedoch die Fehlermeldung: "Der öffentliche Member Paragraphs für den Typ Document wurde nicht gefunden." face-sad

Aber im Prinzip weiß ich jetzt wie ich es machen kann. Eigentlich nur den kompletten Text in nen Array und dann mit "function" oder "Sub" aufsplitten.

Ich werde mir also die Mühe machen und die Kompletten Klassen per Hand in eine Word packen und dann über ein Wordmakro das ganze aufteilen. Hat den Vorteil das der Text gleich Formatiert ist. face-smile face-smile face-smile

Aber Danke für den Denkanstoß. Meistens ist die einfachste Lösung halt doch die beste :D
Member: Biber
Biber Apr 28, 2011 at 18:37:49 (UTC)
Goto Top
moin Erik87,

Zitat von @erik87:
Es erscheint jedoch die Fehlermeldung: "Der öffentliche Member Paragraphs für den Typ Document wurde nicht gefunden." face-sad

Das oben als Object verwendete ActiveDocument ist auch nur ein Property.
Das hat gerade mal einen ActiveDocument.Name und das war es schon fast.

Die Paragraphs wiederum sind Child-Objects von drei möglichen Object-Typen: von Document, Range oder Selection.

Dim rngAlles As Range
' Mach also einfach zu Beginn des Subs, _falls_ denn überhaupt 
' mehrere Word-Dokumente offen sein können, ein
Documents("DeineWorddatei.doc").Activate

Set rngAlles = ActiveDocument.Range(Start:=0, End:=0)
For Each Absatz In rngAlles.Paragraphs 
 ....

Grüße
Biber
Member: erik87
erik87 Apr 28, 2011 at 18:44:19 (UTC)
Goto Top
Hallöle Biber,

anscheinend war der Fehler das ich den Code in den VisualStudio08-Makroeditor kopiert habe. :D Da ja mein Anliegen einer "Export-Funktion" direkt aus dem VisualStudio galt. Im Word bekomme ich den Makro alleine hin. Vielen vielen Dank trotzdem face-smile


Mfg.
Member: Biber
Biber Apr 28, 2011 at 18:46:54 (UTC)
Goto Top
*lach*

Wie du schon so treffend schriebst:
Meistens ist die einfachste Lösung halt doch die beste...
Auf diese einfache Wurzel des Übels bin ich in der Tat nicht gekommen... *gg

Dann lass uns da bitte einen Haken dran machen.

Grüße
Biber