0cool
Goto Top

Word 2003 jede seite in ein neues Dokument speichern

Hallo Leute,

ich soll hinkriegen, dass aus einem Bestehenden Word Dokument das mehrere Seiten hat(die Seitenzahl kann varieren), jede Seite als ein neues Dokument abgespeichert wird.
Also Seite 1 von Dokument A soll in Dokument 001 gespeichert werden, Seite 2 von Dokument A soll in Dokument 002 gespeichert werden, usw.
Dokument 001 und 002 existieren noch nicht.

Ich habe ein Makro, dass aber nur die Hälfte macht, d.h. bei Seite 1 funktioniert es, bei Seite zwei ist das Dokument leer obwohl die zweite Seite gefüllt ist, usw.

Der code des Macros ist folgender,

Private Const Praefix = "Serienbrief"  

Sub ResultatDesSeriendrucksAufteilenOhneKopfUndFusszeilen()
  Dim oDoc As Document, Abschnitt As Section, nDoc As Document
  Set oDoc = ActiveDocument
  Verzeichnis = oDoc.Path 'Falls Ergebnis bereits gespeichert, dann im selben Pfad  
  If Verzeichnis = "" Then 'Sonst im Standard-Dokumentenverzeichnis  
    Verzeichnis = Dialogs(wdDialogToolsOptionsFileLocations).Setting
  End If
  Anz = oDoc.Sections.Count 'Für alle Abschnitte  
  For i = 1 To Anz - 1
    Set Abschnitt = oDoc.Sections(i)
    Set nDoc = Documents.Add(Template:=oDoc.AttachedTemplate.FullName)
    nDoc.Content.FormattedText = Abschnitt.Range.FormattedText
    nDoc.Range.Find.Execute FindText:="^b", ReplaceWith:="" 'Abschnittwechsel suchen  
    dsname = Verzeichnis & "\" & Praefix & Format(i, "0000") & ".doc"  
    nDoc.SaveAs FileName:=dsname, AddToRecentFiles:=False
    nDoc.Close
  Next i
End Sub

Nun meine Frage was ist an dem Macro falsch?
Danke für eure Hilfe.


Gruß

0cool

Content-ID: 118684

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

Ausgedruckt am: 25.11.2024 um 12:11 Uhr

Dieter-56
Dieter-56 21.06.2009 um 18:29:16 Uhr
Goto Top
hallo,
als programmiermäßiger ungeschulter laie fällt mir aber schon mal folgende Zeile auf:

For i = 1 To Anz - 1

ich würde das so interpretieren: i = 1 to anz- 1 --> mache seite1 in doc 1 und dann schluß und aus.

nur so ein gedanke, programmierer werden mir da vielleicht widersprechen.
folgender gedanke kommt mir noch für diese zeile:

for i > 0 To Anz - > 0

probiers mal mit diesem gedanken.

dieter
76109
76109 22.06.2009 um 00:42:53 Uhr
Goto Top
Hallo 0cool!

Also, ich habe das mal getestet und herausgefunden, dass egal wieviel Seiten ich habe, der Sections.Count und Sections.Item immer 1 ist.

Zum Ersetzen von Seitenumbrüchen:
FindText:=vbFormFeed, ReplaceWith:="", Replace:=wdReplaceAll  ' Chr(12)  

@dieter_56
Die Anweisung "For i = 1 To Anz - 1" ist kein Fehler und bedeutet Schleifenzähler von 1 bis (Wert - 1)

Gruß Dieter

[Edit] Im Text hatte ich anstatt Seiten- Zeilenumbrüche geschrieben. Im Code war's aber richtig [/Edit]
0cool
0cool 25.06.2009 um 18:37:27 Uhr
Goto Top
Hey Leute,

vielen dank für eure Hilfe, aber ich bin nicht wirklich weiter, was ich vergessen habe zu sagen ist, dass auf den Blättern ein Textfeld ist, in dem alles drin steht forhandene Fußzeile soll nicht mit auf das neue Dokument übertragen werden.

Immoment ist es noch so das die Fußzeile mit übertragen wird und das Textfele nur manchmal übertragen wird.

Das Document findet ihr unter dem link http://www.computerservice-zelt.de/testen/macro.doc

Vielleicht könnt ihr mir damit noch besser helfen natürlich sind sämtliche Informationen die ich nicht veröffentlichen darf rausgenommen.

Gruß

Thorsten