Einfügen von Seiten/Absätzen/Text in Word durch Makros

  • #1
A

Algar

Guest
Hallo,

vielleicht kann mir jemand helfen.  :-\
Ich möchte in Word mit Makros (über Checkboxen oder so) Absätze oder Seiten einfügen, weiss aber nicht, ob das überhaupt geht...

Wer weiss, ob es geht und wenn ja wie??

Danke
Algar    :)
 
  • #2
Hallo Algar,

prinzipell ist das machbar. Beschreib doch den Ablauf, den du dir vorstellst, mal etwas genauer.

Gruß Matjes :)
 
  • #3
Also:

Ich möchte ein Dokument aufbauen, das modular ist.
D.h. ich möchte am Anfang über Checkboxes entscheiden, für was das Dokument gilt (in meinem speziellen Fall: Entscheid über verschiedene Aufgaben einer technischen Vorrichtung).
Je nachdem was ich dort angeklickt habe erscheint ein weiterer Absatz (mit Checkboxen...), der mir präzisiert, was ich will.

Wenn ich nun von 3 Auswahlmöglichkeiten zu Beginn des Dokumentes nur eine auswähle möchte ich die anderen beiden zugehörigen Absätze verborgen/unterdrückt haben.

Zweifle aber ehrlich gesagt daran, dass es - wie in Excel - geht.
Hoffe du kannst mir da helfen..
:(

mfg
Algar
 
  • #4
Wie soll denn diese Entscheidungs-Oberfläche aufgerufen werden ?

Man könnte den Text in einer Vorlage mit Makro ablegen. Über Datei neu-> Vorlage würde die Entscheidungs-Oberfläche gleich aufgehen.

So ungefähr ... ?

Gruß Matjes :)
 
  • #5
Tendentiell ein sehr guter Tipp! ::)

Allerding muss dann ja (bei einem Dokument, dass von mehreren Personen angewendet werdfen soll) jeder diese Vorlagen erhalten und regelmässig updaten...
Wie das gehen soll ist mir noch unklar. :(

Gibt es keine elegantere Methode?

mfg
Algar
 
  • #6
Hast du schon irgendetwas erreicht? wäre auch sehr intressiert an dieser lösung!
 
  • #7
Hallo zusammen,

man könnte auch eine Konstruktion erstellen, bei dem in einem/mehreren Verzeichnisse die Textbausteine jeweils in einer Datei abgelegt sind. Über ein/mehrere Ordnungskriterten könnte man die Textbausteine zur Auswahl anbieten. Das geht schon in Richtung Datenbank-Anwendung (also Access). In Access könnte man auch gleich die Hirarchie mit aufbauen. Mit Excel/Word läßt sich das in kleinem Rahmen auch realisieren.
 
@Algar:
Um eine Aktualisierung der Textbausteine zwischen den Partnern wirst Du wohl nicht herumkommen. Um eine möglichst große Unabhängigkeit der einzelnen Partner zu haben -sprich, jeder macht sich auch seine eigenen Textbausteine -  ist mir die Idee mit der Datenbank gekommen.

Die grundsätzliche Frage ist nun: Wie baut man die Hirarchie auf ?


Der allgemeine Ablauf könnte so sein:
a) Userform - Hauptthemen auswählen
b) zu den Hauptthemen Unterthemen auswählen
c) Weiter Auswahl der Unter-Unter-Themen
d) ggf noch eine 4 Stufe
e) Makro in Vorlage kopiert alle angekreuzten Textbausteine zusammen in das neue Dokument (ggf. auch noch eine Rheihenfolge-Auswahl)

So etwas könnte ich mir vorstellen.

Gruß Matjes :)
 
  • #8
Klappt recht gut:    :)
Wenn man eine Vorlage mit formatiertem Text erstellt (z.B. Test1.dot) und dann in der Gliederungsansicht die Überschriften markiert und diese Abschnitte dann über ein Makro einfügt.
Ist im Prinzip die Datenbank-Lösung, die auch elegant ist. ;)
:D Denn der Vorteil ist, dass auch Änderungen mit eingefügt werden (wenn der Absatz zur Überschrift in der Test1.dot geändert wird, werden auch die Änderungen mit eingefügt...). Somit muss immer nur eine Datei (die Vorlage) geupdatet werden...
:p Nachteil ist, dass in einem geschützten Dokument (wie ich es zu haben gedenke, da ich mehrere Checkboxes haben will, die der User anklickt) keine Absätze automatisch eingefügt werden können...
Hat da einer eine Lösung??? ???

thanx im Voraus
 
  • #9
Hallo Algar,

einfach vor dem Einfügen den Schutz per Makro abschalten. Setz natürlich ein einheitliches Paßwort voraus.
(Ein Paßwort knacken ist nur eine Frage der Zeit ;D)

Gruß Matjes :)
 
  • #10
Ja, hab ich mir auch gedacht, ich bekomme es bloss nicht hin....

Und danach sollte der Schutz ja wieder bestehen.... :-\

Wie funktioniert das?

lg Algar
 
  • #11
Hi Algar,

hier ein kleines Beispiel.
Das 1. Makro erzeugt ein Dokument mit 3 fortlaufenden Abschnitten.
Der 2.Abschnitt wird geschützt (ohne Passwort)

Das 2. Makro erzeugt ein Dokument mit 3 fortlaufenden Abschnitten.
Der 2.Abschnitt wird geschützt (mitPasswort)

Das 3. Makro hebt den Schutz von Beispiel 2 wieder auf.

Gruß Matjes :)
Code:
Sub NeuesDokMitFortlaufendenAbschnittenUnd2tenAbschnittSchuetzen()

  Documents.Add
  
  ActiveDocument.Content.Select
  With Selection
    .Collapse Direction:=wdCollapseEnd
    .InsertAfter Dies ist ein Text. & vbCr & vbCr
    .Collapse Direction:=wdCollapseEnd
   ->fortlaufenden Abschnittswechsel einfügen
    .InsertBreak Type:=wdSectionBreakContinuous
    .InsertAfter Dies ist ein Text. & vbCr & vbCr
    .Collapse Direction:=wdCollapseEnd
   ->fortlaufenden Abschnittswechsel einfügen
    .InsertBreak Type:=wdSectionBreakContinuous
    .InsertAfter Dies ist ein Text. & vbCr & vbCr
    .Collapse Direction:=wdCollapseEnd
  End With
  
 ->nur 2.Abschnitt schützen,
 ->es sind nur Eingaben in Formularfelder möglich
  ActiveDocument.Sections(1).ProtectedForForms = False
  ActiveDocument.Sections(2).ProtectedForForms = True
  ActiveDocument.Sections(3).ProtectedForForms = False
  ActiveDocument.Protect Type:=wdAllowOnlyFormFields

End Sub
Sub NeuesDok2MitFortlaufendenAbschnittenUnd2tenAbschnittSchuetzen()

  Documents.Add
  
  ActiveDocument.Content.Select
  With Selection
    .Collapse Direction:=wdCollapseEnd
    .InsertAfter Dies ist ein Text. & vbCr & vbCr
    .Collapse Direction:=wdCollapseEnd
   ->fortlaufenden Abschnittswechsel einfügen
    .InsertBreak Type:=wdSectionBreakContinuous
    .InsertAfter Dies ist ein Text. & vbCr & vbCr
    .Collapse Direction:=wdCollapseEnd
   ->fortlaufenden Abschnittswechsel einfügen
    .InsertBreak Type:=wdSectionBreakContinuous
    .InsertAfter Dies ist ein Text. & vbCr & vbCr
    .Collapse Direction:=wdCollapseEnd
  End With
  
 ->nur 2.Abschnitt schützen,
 ->es sind nur Eingaben in Formularfelder möglich
  ActiveDocument.Sections(1).ProtectedForForms = False
  ActiveDocument.Sections(2).ProtectedForForms = True
  ActiveDocument.Sections(3).ProtectedForForms = False
  ActiveDocument.Protect Type:=wdAllowOnlyFormFields, Password:=123456

End Sub

Sub SetUnprotection()
  ActiveDocument.Unprotect _
    Password:=123456
End Sub
 
  • #12
Hi, also das sind geile Tips, muss schon sagen...

Die bringen mich auf neue Ideen:
Wie kann ich einzelne Absätze ausblenden, oder ganz löschen?

Ich hab zwar ein dickes vba-Buch, allerdings findet man solch spezifische Befehle nicht...
Gibt es da eine gute Zusammenfassung/Erklärung irgendwo?

Wenn mir einer (Matjes  ;) ?) noch das mit den Absätzen entfernen erklären kann wäre ich echt dankbar (passen sich die Seitenzahlen automatisch an, d.h. ich lösche 3 Seiten doch die Seitenzahl läuft normal weiter??)?

Sorry für meine vielen kleinen Problemchen...

lg
Algar187

(former known as Algar)
 
  • #13
Sorry, Fehler meinerseits:  :-[
will keine Absätze einfügen/verbergen/löschen, sondern ABSCHNITTE...

macht das die Sache leichter ??
 
  • #14
Ok, hab nen Code ausgedacht:

Code:
Sub Abschnitt_löschen()
'
' Abschnitt_auswählen Makro
' Makro programmiert am 27.06.2005 von Algar187

'----- Dokumentenschutz aufheben -----
   ->' * Anführungszeichen beinhalten das Passwort
    ActiveDocument.Unprotect 12
'----- Abschnitt auswählen und löschen -----
   -> Kürzel für Abschnitt benennen
    Dim rng As Word.Range
   -> Abschnitt auswählen
       ->' * Klammer gibt den zu markierenden Abschnitt an
    Set rng = ActiveDocument.Sections(2).Range
   -> Abschnitt löschen
        rng.Delete
'----- Dokumentenschutz wiederherstellen -----
   ->' * Anführungszeichen beinhalten das Passwort
        ActiveDocument.Protect wdAllowOnlyFormFields, True, 12
'-----
End Sub

Das klappt.
Nur: wie kann ich das Kontrollkästchen, über dass ich das Makro ausführen lassen möchte danach deaktivieren, dass es nur einmal ausgeführt werden kann?

Ich muss auch andere Kästchen deaktivieren, aber das wird genauso gehen, oddder??

Help me please ! :(
 
  • #15
Hi Algar187,

das scheint sich ja zu entwickeln  :D :D :D

Wenn man erstmal merkt, was man da alles machen kann,  geht's immer weiter.

Zu deinem Schnipsel noch ein kleiner Tip: Alles was du währeand des Makros per Set setzt solltest Du am Ende wieder freigeben.
Code:
Set mg = Nothing
Sonst werden das Speicherfresser  ;D

Für die Checkbox1 heißt der Befehl zum Sperren
Code:
CheckBox1.Locked = True
Wenn du sie aus dem Blickfeld nehmen willst, kannst du mit
Code:
CheckBox1.Visible = False
diese ausblenden - unsichtbar machen.

Gruß Matjes :)
 
  • #16
Oh, Mann: immer wenn ich denke ich hab was gelöst gibt es da nächste Problem...

Ich mach das über Kontrollkästchen, dazu hab ich von Dir schon einmal nen Post gefunden und verwendet (der klappt übrigends sehr gut...)

Code:
Const TextMarke_ChkBox1 = Kontroll01
Const TextMarke_ChkBox2 = Kontroll02
Const TextMarke_ChkBox3 = Kontroll03
Const TextMarke_ChkBox4 = Kontroll04

Sub K1_eintreten()
If
  ThisDocument.FormFields(TextMarke_ChkBox1).CheckBox.Value = True 
Then
    ThisDocument.FormFields(TextMarke_ChkBox2).CheckBox.Value = False
    ThisDocument.FormFields(TextMarke_ChkBox3).CheckBox.Value = False
    ThisDocument.FormFields(TextMarke_ChkBox4).CheckBox.Value = False
End If
End Sub

Was ist der Code zum Kontrollkästchen sperren?
Sorry...
:eek:

Algar187
 
  • #17
Locked = true, z.B.
Code:
ThisDocument.FormFields(TextMarke_ChkBox2).CheckBox.Locked = True
Gruß Matjes :)
 
  • #18
Hatte ich schon probiert, geht bei Kontrollkästchen wohl nicht...
Andere Ideen? :(

lg
Algar187
 
  • #19
dann probiers mal so
Code:
ThisDocument.FormFields(TextMarke_ChkBox2).Enabled=false
 
  • #20
Hi, hab den Code jetzt so, klappt aber nicht:

Code:
Const TextMarke_ChkBox1 = Kontroll01
Const TextMarke_ChkBox2 = Kontroll02
Const TextMarke_ChkBox3 = Kontroll03
Const TextMarke_ChkBox4 = Kontroll04

Sub K1_eintreten()

If ThisDocument.FormFields(TextMarke_ChkBox1).CheckBox.Value = True Then
    ThisDocument.FormFields(TextMarke_ChkBox2).CheckBox.Value = False
    ThisDocument.FormFields(TextMarke_ChkBox2).Enabled = False
    ThisDocument.FormFields(TextMarke_ChkBox3).CheckBox.Value = False
    ThisDocument.FormFields(TextMarke_ChkBox4).CheckBox.Value = False
    
End If
End Sub

Folgender Fehler erscheint:
Laufzeitfehler->5941':
Das angeforderte Element ist nicht in der Sammlung vorhanden.

Guck ich dumm aus der Wäsch...
 
Thema:

Einfügen von Seiten/Absätzen/Text in Word durch Makros

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben