> Ist bestimmt ganz einfach zu beantworten,
Stimmt es fehlt ja die genaue Frage oder ein bisschen Code
> ich habe nur kein Buch hier
siehe Signatur ;-))
> Ic h erstelle ein Dokument nur per VBA und das funktioniert auch soweit.
> Ich m�chte einfach Text in dieses Dokument anf�gen und die verschiedenen
> S�tze sollen aber immer eine andere Formatierung haben.
> Also z.B. eine �berschrift, dann eine Zwischen�berschrift und dann ein
> wenig
> Flie�text und irgendwann kommt dann die n�chste �berschrift und so weiter.
> Ich komme aber mit demRange-Objekt nicht hin und formatiere immer das
> ganze
> Dokument :-(
Du mussen den Absatz, den du formatieren m�chtest direkt mit einem
.Range-Objekt ansprechen. Doch wie gesagt, wenn wir nicht genau wissen, wie
du dein Dokument aufbaust, so k�nnen wir dir nicht weiter helfen wie du dein
.Range aufbauen musst.
Zei ein paar Zeilen und dann sollte eine Unterst�tzung m�glich sein.
�brigens, in microsoft.public.de.word.vba bist du mit reinen VBA Fragen gut
bedient....
--
Thomas Gahler
MVP f�r Word
Co-Autor von �Microsoft Word-Programmierung.
Das Handbuch� (MS Press)
- Windows XP (SP3), Office XP (SP3)
Set objNeuesDokument = CreateObject("Word.Document")
Set myRange = objNeuesDokument.Range
With myRange
.InsertAfter "BELGIEN" & vbCrLf
.Font.Size = 12
.Font.Bold=True
End With
With myRange
.Font.Size = 9
.Font.Underline = True
.InsertAfter vbCrLf & "Brüssel" & vbCrLf
End With
Ich möchte nur neue Zeilen anfügen, und denen jeweils eine eigene
Formatierung verpassen (allerdings ohne Formatvorlagen).
"Thomas Gahler" wrote:
> Hallo Andreas
>
>
> > Ist bestimmt ganz einfach zu beantworten,
> Stimmt es fehlt ja die genaue Frage oder ein bisschen Code
>
> > ich habe nur kein Buch hier
> siehe Signatur ;-))
>
>
> > Ic h erstelle ein Dokument nur per VBA und das funktioniert auch soweit.
> > Ich möchte einfach Text in dieses Dokument anfügen und die verschiedenen
> > Sätze sollen aber immer eine andere Formatierung haben.
> > Also z.B. eine Überschrift, dann eine Zwischenüberschrift und dann ein
> > wenig
> > Fließtext und irgendwann kommt dann die nächste Überschrift und so weiter.
> > Ich komme aber mit demRange-Objekt nicht hin und formatiere immer das
> > ganze
> > Dokument :-(
> Du mussen den Absatz, den du formatieren möchtest direkt mit einem
> ..Range-Objekt ansprechen. Doch wie gesagt, wenn wir nicht genau wissen, wie
> du dein Dokument aufbaust, so können wir dir nicht weiter helfen wie du dein
> ..Range aufbauen musst.
> Zei ein paar Zeilen und dann sollte eine Unterstützung möglich sein.
>
>
>
> Übrigens, in microsoft.public.de.word.vba bist du mit reinen VBA Fragen gut
> bedient....
>
>
> --
> Thomas Gahler
> MVP für Word
Andreas Gruhlke wrote:
[..]
> Ich möchte nur neue Zeilen anfügen, und denen jeweils eine eigene
> Formatierung verpassen (allerdings ohne Formatvorlagen).
gibt's einen bestimmten Grund, nicht nur längern Code, sondern auch
schlechter strukturierte Dokumente zu erstellen?
Gruss
Robert
--
/"\ ASCII Ribbon Campaign | MSFT |
\ / | MVP | Scientific Reports
X Against HTML | for | with Word?
/ \ in e-mail & news | Word | http://www.masteringword.eu/
Wenn du auf den Codeschnipsel anspielst, muss das Ergebnis ja nichts damit
zu tun haben, was ich hier eingesetzt haben. Ich wollte ja nur verdeutlichen,
dass ich aufeinanderfolgende Zeilen mit unterschiedlicher Formatierung
brauche.
Im Grunde habe ich ja noch keinen sinnvollen Code, weil ich eben (noch)
nicht weiß wie es geht.
Gruss
Andreas
nimm Dir Thomas Rat zu Herzen und frage in der Gruppe
microsoft.public.de.word.vba nochmal frisch nach. Diese Gruppe ist eigens für
Fragestellungen zum Bereich VBA da.
Gruß
Bernhard Sander
> Sorry, die folgenden Zeilen verdeutlichen vielleicht, was ich m�chte.
So ist besser. ich habe dir ein Bsp. gemacht wie du das anpacken k�nnest.
Bei dir fehlt in erster Linie das neue festelegen des .Range-Objekts.
Machmal ist es sinnvoll wenn w�hrend dem programmieren ein myRange.select
eingebaut wird, dann kannst du, wenn du im EInzelschritt durch das Programm
gehst sehen, wo dein Range gerade ist. Vielles wird dann pl�tzlich klar.
Sub Demo1()
Dim doc As Word.Document
Dim rng As Word.Range
Set doc = Documents.Add
Set rng = funcLetzerAbsatzAlsRange(doc)
With rng
.Text = "BELGIEN" & vbCrLf
.Font.Size = 12
.Font.Bold = True
End With
Set rng = funcLetzerAbsatzAlsRange(doc)
With rng
.Text = vbCrLf & "Br�ssel" & vbCrLf
.Font.Size = 9
.Font.Underline = True
End With
End Sub
Set rng = funcLetzerAbsatzAlsRange(doc)
With rng
.Text = "Bla bla bla ..." & vbCrLf
.Style = wdStyleNormal
End With
End Sub
Private Function funcLetzerAbsatzAlsRange( _
ByVal doc As Word.Document) _
As Word.Range
With doc.Paragraphs
Set funcLetzerAbsatzAlsRange = .Item(.Count).Range
End With
End Function
Ein paar ganz h�ssliche Dinge, die du mit deinem Programm bzw. Dokument
machst noch kurz angemerkt. Das ist das was Robert meint.
- es w�re sinnvoller alle Formatierungen in Formatvorlagen abzulegen (dazu
geh�rt im Besonderen: deine zus�tzlichen Abs�tze, damit genug freier raum
zwischen den Titel ist. Dazu geh�rt auch dein BELGIEN, diese kann ebenfalls
mittels Formatierung erreicht werden.)
Weshlab das Ganze? Weil du die Darstellung ganz schnell �ndern kannst, ohne
dein Programm anzupassen und weil ein Dokument als Fliesstext aufgebaut wird
und deshalb keine leeren Abs�tze und solche Sachen enth�lt.
Das w�rde dann so aussehen
Sub Demo2()
Dim doc As Word.Document
Dim rng As Word.Range
Set doc = Documents.Add
Set rng = funcLetzerAbsatzAlsRange(doc)
With rng
.Text = "Belgien" & vbCrLf
.Style = wdStyleHeading1
End With
Set rng = funcLetzerAbsatzAlsRange(doc)
With rng
.Text = "Br�ssel" & vbCrLf
.Style = wdStyleHeading2
End With
--
Thomas Gahler
MVP f�r Word
Was die Formatvorlagen betrifft:
Ich produziere das Word-Dokument aus Access heraus. Im Umfeld, in dem das
ganze ausgeführt wird, hat sich früher schon gezeigt, dass ich weder auf die
vorhandenen Formatvorlagen bauen kann, noch eine eigene mitgeben kann.
Seitdem definiere ich auch z.B. die Seitenformatierung im Code und es
funktioniert, auch wenn das offensichtlich nicht gerade der schönste Weg zum
Ziel ist.
Ich bin ja schon froh, wenn's läuft, weil ich halt äußerst selten mit dem
Word-Objektmodell in Berührung komme. Zum Word-MVP wird's in diesem Leben
also nicht mehr reichen ;-)
Vielen Dank nochmal
Andreas
"Thomas Gahler" wrote:
> Hallo Andreas
>
> > Sorry, die folgenden Zeilen verdeutlichen vielleicht, was ich möchte.
> So ist besser. ich habe dir ein Bsp. gemacht wie du das anpacken könnest.
>
> Bei dir fehlt in erster Linie das neue festelegen des .Range-Objekts.
> Machmal ist es sinnvoll wenn während dem programmieren ein myRange.select
> eingebaut wird, dann kannst du, wenn du im EInzelschritt durch das Programm
> gehst sehen, wo dein Range gerade ist. Vielles wird dann plötzlich klar.
>
> Sub Demo1()
> Dim doc As Word.Document
> Dim rng As Word.Range
>
> Set doc = Documents.Add
>
> Set rng = funcLetzerAbsatzAlsRange(doc)
> With rng
> .Text = "BELGIEN" & vbCrLf
> .Font.Size = 12
> .Font.Bold = True
> End With
>
> Set rng = funcLetzerAbsatzAlsRange(doc)
> With rng
> .Text = vbCrLf & "Brüssel" & vbCrLf
> .Font.Size = 9
> .Font.Underline = True
> End With
> End Sub
>
>
> Set rng = funcLetzerAbsatzAlsRange(doc)
> With rng
> .Text = "Bla bla bla ..." & vbCrLf
> .Style = wdStyleNormal
> End With
> End Sub
>
> Private Function funcLetzerAbsatzAlsRange( _
> ByVal doc As Word.Document) _
> As Word.Range
>
> With doc.Paragraphs
> Set funcLetzerAbsatzAlsRange = .Item(.Count).Range
> End With
> End Function
>
>
>
> Ein paar ganz hässliche Dinge, die du mit deinem Programm bzw. Dokument
> machst noch kurz angemerkt. Das ist das was Robert meint.
> - es wäre sinnvoller alle Formatierungen in Formatvorlagen abzulegen (dazu
> gehört im Besonderen: deine zusätzlichen Absätze, damit genug freier raum
> zwischen den Titel ist. Dazu gehört auch dein BELGIEN, diese kann ebenfalls
> mittels Formatierung erreicht werden.)
> Weshlab das Ganze? Weil du die Darstellung ganz schnell ändern kannst, ohne
> dein Programm anzupassen und weil ein Dokument als Fliesstext aufgebaut wird
> und deshalb keine leeren Absätze und solche Sachen enthält.
>
> Das würde dann so aussehen
>
> Sub Demo2()
> Dim doc As Word.Document
> Dim rng As Word.Range
>
> Set doc = Documents.Add
>
> Set rng = funcLetzerAbsatzAlsRange(doc)
> With rng
> .Text = "Belgien" & vbCrLf
> .Style = wdStyleHeading1
> End With
>
> Set rng = funcLetzerAbsatzAlsRange(doc)
> With rng
> .Text = "Brüssel" & vbCrLf
> .Style = wdStyleHeading2
> End With
>
>
>
>
>
> --
> Thomas Gahler
> MVP für Word
Andreas Gruhlke wrote:
> Wenn du auf den Verzicht von Formatvorlagen anspielst, so möchte ich diese
> aus verschiedenen Gründen nicht verwenden, unter anderem, weil ich keinen
> Einfluss auf die Formatvorlagen habe, die auf verschiedenen Rechnern
> vorhanden sind.
Du sagtest, Du baust Dokumente nur per VBA. Ich gehe daher _nicht_ davon
aus, dass Du einfach (per Code) ein neues Dokument auf Basis der
zufällig gerade vorhandenen Normal.dot erstellst und dann darin
herumwerkelst, sondern dass Du Deine eigene Dokumentvorlage hast, auf
deren Basis Du etwas kreierst.
Dann hast Du automatisch auch Deine eigenen Formatvorlagen.
> Was die Formatvorlagen betrifft:
> Ich produziere das Word-Dokument aus Access heraus. Im Umfeld, in dem das
> ganze ausgef�hrt wird, hat sich fr�her schon gezeigt, dass ich weder auf
> die
> vorhandenen Formatvorlagen bauen kann,
Das ist klar.
> noch eine eigene mitgeben kann.
Doch wenn du eine eigene .mdb ausliefenr kannst, weshalb nicht im gleichen
Verzeichnis zus�tzlich eine .dot mitliefern, dann h�ttest du bereits die
Formatvorlagen.
Oder du definierst die Dokumentvorlagen im Code selber und dann kannst du
sie verwenden. Das w�re auch noch einigermassen sch�nes Vorgehen, denn die
Darstellung k�nne im Code zentral angepasst werden und sie k�nnte im
Dokument angepasst werden.
--
Thomas Gahler
MVP f�r Word