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

  • #21
Ok, Problem gelöst, hattest mit
Code:
ThisDocument.FormFields(TextMarke_ChkBox2).Enabled = False
recht, frag mich nicht, warum es vorhin nicht ging, habe hier sowieso interessante Fehlermeldungen & Code-Versteckspiele (schätze, dass die automatische Synchro meines FirmenPCs mir den Code massakriert....).

Nur noch eins (hoffe ich...):  :D

Wie kann ich mehrere Abschnitte gleichzeitig markieren (zum löschen...)?

Mach ich das am besten sequentiell, z.B.
Code:
    Dim rng As Word.Range
    Set rng = ActiveDocument.Sections(5).Range
     rng.Delete
    Set rng = Nothing
    Dim rng As Word.Range
    Set rng = ActiveDocument.Sections(6).Range
     rng.Delete
    Set rng = Nothing
usw. ...

...oder gibt es da eine bessere Lösung?
Es geht jedenfalls auch so, bloss dass man - wenn man 2 aufeinanderfolgende Abschnitte löschen möchte - aufpassen muss, dass man 2mal den gleichen Abschnitt eingibt (da der alte 6[sup]te[/sup] Abschnitt nach löschen des alten 5[sup]ten[/sup] der neue 5[sup]te[/sup] ist, alles klar?  :eek:)

Ich stell den Code dann mal hier ein, wenn er fertig ist (zur allgemeinen Belustigung ;D ...)

lg
Algar187
 
  • #22
Da hast Du vollkommen Recht. Bei indizierten Variablen immer vom größten zum kleinsten löschen, sonst verändert sich die Indizierung und du löscht die falsche Variable . Beliebter Fehler  ;D

Das gleich gilt auch beim Einfügen !!!

Gruß Matjes  :)
 
  • #23
Also hier mein Code zum löschen einzelner Abschnitte per Makro:

Gegeben sind zu Anfang 4 Formular-Kontrollkästchen (name: Kontroll01-Kontroll04), über die im geschützten Dokument der Code aktiviert wird.
inkl. Doku...
Code:
Sub K1_eintreten()

'--- Textmarkennamen werden verarbeitbare & logische Bezeichnungen zugewiesen ---
   -> Kontroll01 ist SPANNEN,               entsprechender Abschnitt:   4
   -> Kontroll02 ist HEBEN / TRANSPORT,     entsprechender Abschnitt:   5
   -> Kontroll03 ist MONTAGE,               entsprechender Abschnitt:   6
   -> Kontroll04 ist WASCHEN,               entsprechender Abschnitt:   7

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

'--- Abfrage als if-Schleife (theoret. nicht nötig, redundante Schleife...) ---
   ->-- Frage: Ist Checkbox 1 aktiviert ? --

If ThisDocument.FormFields(TextMarke_ChkBox1).CheckBox.Value = True Then

   ->-- ... dann sperre ALLE Checkboxen für weitere Eingaben! --

 ThisDocument.FormFields(TextMarke_ChkBox1).Enabled = False
 ThisDocument.FormFields(TextMarke_ChkBox2).Enabled = False
 ThisDocument.FormFields(TextMarke_ChkBox3).Enabled = False
 ThisDocument.FormFields(TextMarke_ChkBox4).Enabled = False

   ->-- ebenfalls redundant: Alle anderen Checkboxes werden auf->deaktiviert' gesetzt! --

ThisDocument.FormFields(TextMarke_ChkBox2).CheckBox.Value = False
ThisDocument.FormFields(TextMarke_ChkBox3).CheckBox.Value = False
ThisDocument.FormFields(TextMarke_ChkBox4).CheckBox.Value = False

'--- Dokumentenschutz aufheben ---
           -> --> Anführungszeichen beinhalten das Passwort

ActiveDocument.Unprotect Test1

'--- ersten Abschnitt auswählen und löschen ---
           -> --> Aufpassen beim Zählen der Abschnitte !!
           -> Abschnittsnummer verringert sich durch vorangegangene Aktionen eventuell...
           -> --> Bei indizierten Variablen immer vom größten zum kleinsten löschen, sonst verändert sich die Indizierung und man löscht die falsche Variable !
           ->' --> über Codes/Makros gelöschte Abschnitte können durch die->Rückgängig'-Taste NICHT wiederhergestellt werden

   ->-- Kürzel & Auswahlart für Abschnitt definieren --

    Dim rng As Word.Range

   ->-- Abschnitt auswählen --
           -> --> Klammer gibt den zu markierenden Abschnitt an

        Set rng = ActiveDocument.Sections(7).Range

   ->-- Abschnitt löschen --

        rng.Delete

   ->-- Speicher freigeben --

        Set rng = Nothing

'--- zweiten Abschnitt auswählen und löschen ---
           -> identischer Ablauf wie oben

        Set rng = ActiveDocument.Sections(6).Range
        rng.Delete
        Set rng = Nothing

'--- dritten Abschnitt auswählen und löschen ---
           -> identischer Ablauf wie oben

        Set rng = ActiveDocument.Sections(5).Range
        rng.Delete
        Set rng = Nothing

'--- Dokumentenschutz wiederherstellen ---
           -> --> Anführungszeichen beinhalten das Passwort (wie oben!!)

        ActiveDocument.Protect wdAllowOnlyFormFields, True, Test1

'--- Ausgeben einer Nachricht ---

        MsgBox Abschnitte wurden gelöscht. Bei Problemen Dokument ohne Speichern schliessen. & vbCr & vbCr & Nur->Spannende Vorrichtung' ausgewählt., vbExclamation, Hinweis des Autors
    
End If
End Sub
 
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