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
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
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
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. :)
Hallo,
stecke momentan selbst in Projektarbeit, habe da momentan keine Zeit, sorry.
Andreas
Sorry für's pushen, aber einmal probier ich es noch, Hilfe zu bekommen. Ich komme einfach nicht weiter..
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.