Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Formatvorlagen und TableOfContent

Begonnen von BinaryFallout, Juni 07, 2011, 14:30:12

⏪ vorheriges - nächstes ⏩

BinaryFallout

Hey,

ich habe ein Problem, bei dem ich nicht so recht weiterkomme.

Ich lasse mir per VBA ein Word-Dokument erzeugen, welches mehrere Word-Dokumente hineinfügt. Diese habe alle eine besondere Überschrift (andere Schriftart, Größe, Farbe etc.).

Ich möchte nun automatisch (per VBA) ein Inhaltsverzeichnis generieren.
Das Problem: Er erkennt diese eigene Überschrift nicht als solche.
D.h. Word erstellt auch kein TOC. Per Hand unter der Inhaltsverzeichnis-Einstellung (Optionen) kann man angeben, dass dieses Format zur Überschrift gehört. Nun dachte ich mir: Machste unter der normal.dot (oder die zuständige) einfach einmal die Einstellung und gut ist. Aber Pustekuchen.

Kann mir Jemand helfen? Wäre auch dankbar, wenn jemand mal beschreibt, wie man so etwas grundsätzlich löst, bzw. welche Probleme auftreten können. Stehe nämlich unter Zeitdruck (nicht euer Problem, ich weiß ;-)) und möchte mir später ungern Ärger einhandeln.

Es handelt sich um Word2003 in Verbindung mit Access2007.

Vielen Dank für die Leser und Helfer.

MfG,
BinaryFallout

Hondo

Hallo,
Ich möchte nun automatisch (per VBA) ein Inhaltsverzeichnis generieren.
Das Problem: Er erkennt diese eigene Überschrift nicht als solche.


Poste doch mal deinen Code mit dem du das machen möchtest.
Andreas

BinaryFallout

Hi Hondo, hier mal der Code:



Set rs = CurrentDb.OpenRecordset(strSQLgetDocuments)
'-------------------------'-------------------------'-------------------------'-------------------------
       On Error Resume Next
       Set objWordApp = GetObject(, "Word.Application")
       If Err.Number = 429 Then
            Set objWordApp = CreateObject("Word.Application")
            Err.Number = 0
       End If
       If objWordApp Is Nothing Then
            MsgBox "Es konnte keine Verbindung mit Word erstellt werden!", 16, "Problem"
       End If
       objWordApp.Visible = True
       Set objWordDoc = objWordApp.Documents.Add 'Erstellt eine neues Word Document
'-------------------------'-------------------------'-------------------------'-------------------------
Do While Not rs.EOF
strtest = rs("DocPath")
objWordApp.Windows(1).Selection.InsertFile strtest, ConfirmConversions:=False

With objWordApp.ActiveDocument.Range.PageSetup
        .LineNumbering.Active = False
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .SuppressEndnotes = False
        .MirrorMargins = False
        .TwoPagesOnOne = False
        .BookFoldPrinting = False
        .BookFoldRevPrinting = False
        .BookFoldPrintingSheets = 1
End With

rs.MoveNext
Loop
objWordApp.ActiveDocument.TablesOfContents.Add


rs.Close
       Set objWordApp = Nothing
       Set objWordDoc = Nothing



Also die Word-Dokumente an sich werden von den Anwendern selbst geschrieben. Das sind kleine Bausteine, z.B. einer schreibt den Teil Motor, einer Design, einer Basic etc..

Am Ende werden die Teile anhand der der BauNr zusammengefügt (klappt ja auch).
Das Inhaltverzeichnis sollte mit objWordApp.ActiveDocument.TablesOfContents.Add erstellt werden, kann aber auch nicht funktionieren, da wie bereits im ersten Post geschrieben, er gar nicht weiß, dass das eigene Format Überschrift in das Tabellenverzeichnis gehört.

Hoffe du kannst mir auf die Sprünge helfen.

MfG,
BinaryFallout


BinaryFallout

Hey Andreas,

hättest du denn noch einmal Zeit und Lust, dir meinen Code anzugucken?
Natürlich freue ich mich auch über die Hilfe Anderer. :)

Hondo

Hallo,
stecke momentan selbst in Projektarbeit, habe da momentan keine Zeit, sorry.

Andreas

BinaryFallout

Sorry für's pushen, aber einmal probier ich es noch, Hilfe zu bekommen. Ich komme einfach nicht weiter..

BinaryFallout

Hab's jetzt selbst hinbekommen.

Mein Fehler war, dass ich nicht in den Formatvorlageneinstellungen "Formatvorlage basiert auf: " Überschrift 1 gesetzt habe.
Anschliessend brauchte ich nur noch:



Set rangeWord = objWordApp.ActiveDocument.Range(Start:=0, End:=0)
objWordApp.ActiveDocument.TablesOfContents.Add rangeWord, _
                                    UseFields:=True, _
                                    UseHeadingStyles:=True, _
                                    LowerHeadingLevel:=3, _
                                    UpperHeadingLevel:=1


schrieben und TADA. Geht.