Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Tabellenzeilen an bestimmter Position einfügen
zurück: Tabellenende finden weiter: Makro zum einlesen einer HTML Datei. Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Ulrike Andrea
Word-Kenner (ohne VBA)


Verfasst am:
15. Apr 2014, 22:18
Rufname:

Tabellenzeilen an bestimmter Position einfügen - Tabellenzeilen an bestimmter Position einfügen

Nach oben
       Version: Office 2010

Guten Abend zusammen,

leider bin ich absoluter Anfänger in VBA mit Word (habe Grundkenntnisse in Excel-VBA). Ich soll nun hierfür eine Lösung finden:

In eine Tabelle werden 2 Zeilen eingefügt, die erste dieser Zeilen wird mit einer anderen Formatvorlage formatiert und es werden 3 Sternchen eingefügt. Da es einen Dokumentschutz gibt, wird dieser zunächst aufgehoben und dann wieder aktiviert.

Soweit konnte ich das Ganze aufzeichnen und die Sache mit dem Dokumentschutz ergänzen.

Jetzt will ich aber, dass das Makro nur ausgeführt wird, wenn der Cursor in einer Tabellenzelle steht, über der (auch in einer Tabellenzelle) 3 Sternchen stehen. Wenn das nicht der Fall ist, soll gar nichts passieren. Da habe ich keine Idee, wie das funktionieren könnte Sad

Diesen Code hier habe ich schon:

Code:
Sub TabelleZeilenEinfuegen()
'
    ActiveDocument.Unprotect
   
    Selection.InsertRowsBelow 1
    Selection.InsertRowsBelow 1
    Selection.MoveUp Unit:=wdLine, Count:=1
    Selection.Style = ActiveDocument.Styles("_Sternchen")
    Selection.TypeText Text:="***"
    Selection.MoveDown Unit:=wdLine, Count:=1
   
    ActiveDocument.Protect Password:="", NoReset:=False, Type:=wdNoProtection, _
         UseIRM:=False, EnforceStyleLock:=True
         
    CommandBars("Restrict Formatting and Editing").Visible = False
    CommandBars("Styles").Visible = False
End Sub



Vielen Dank schon mal
Ulrike
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
15. Apr 2014, 23:01
Rufname:
Wohnort: Leipzig


AW: Tabellenzeilen an bestimmter Position einfügen - AW: Tabellenzeilen an bestimmter Position einfügen

Nach oben
       Version: Office 2010

Hallo Ulrike,

probier mal so:
Code:
Sub TabelleZeilenEinfuegen()
'
    If ActiveDocument.ProtectionType <> wdNoProtection Then
    ' falls das Dokument geschützt ist
        ActiveDocument.Unprotect
    End If
   
    If Not Selection.Information(wdWithInTable) Then
    ' falls der Cursor nicht in einer Tabelle steht
        Exit Sub
        ' Makro verlassen
    End If
   
    Selection.MoveUp Unit:=wdLine, Count:=1
    ' 1 Zeile nach oben
    If InStr(1, TrimZellenInhalt(Selection.Cells(1).Range.Text), "***", vbTextCompare) = 0 Then
    ' wenn in der Zelle, in der der Cursor jetzt steht, nicht 3 Sterne stehen
        Selection.MoveDown Unit:=wdLine, Count:=1
        ' gehe wieder 1 Zeile nach unten
        Exit Sub
        ' und Makro verlassen
    End If
    Selection.MoveDown Unit:=wdLine, Count:=1
   
    Selection.InsertRowsBelow 1
    Selection.InsertRowsBelow 1
    Selection.MoveUp Unit:=wdLine, Count:=1
    Selection.Style = ActiveDocument.Styles("_Sternchen")
    Selection.TypeText Text:="***"
    Selection.MoveDown Unit:=wdLine, Count:=1
   
    ActiveDocument.Protect Password:="", NoReset:=False, Type:=wdNoProtection, _
         UseIRM:=False, EnforceStyleLock:=True
         
    CommandBars("Restrict Formatting and Editing").Visible = False
    CommandBars("Styles").Visible = False
End Sub
Function TrimZellenInhalt(str As String)
    ' entfernt am Ende jeder Zelle Absatzmarke (Chr(13)) und "Zellenende" Chr(7)

    str = Left$(str, Len(str) - 2)
    TrimZellenInhalt = str

End Function

Die ersten 2 Testabfragen sind nur vorsichtshalber drin, schaden aber auch nicht. Im 3. Block wird 1 Zeile nach oben "gegangen" und "nachgesehen", ob dort 3 Sterne stehen. Wenn das nicht der Fall ist, wird an den Ausgangspunkt zurückgekehrt und das Makro auch verlassen. Falls 3 Sterne gefunden werden, wird natürlich auch an den Ausgangspunkt zurückgekehrt.

Gruß
Lisa
theoS
WORD/Excel Erfahren und VBA Bastler


Verfasst am:
15. Apr 2014, 23:19
Rufname: theo

AW: Tabellenzeilen an bestimmter Position einfügen - AW: Tabellenzeilen an bestimmter Position einfügen

Nach oben
       Version: Office 2010

rein interessehalber: Du hast die ganze Tabelle vom Dokumentenschutz ausgenommen?
(Hintergrund: Ich konnte den Cursor in einer Tabelle eines geschützten Dokuments leider nur dann bewegen, wenn Formularfelder drin sind. Wie machst du das?)

_________________
theo s.
Ulrike Andrea
Word-Kenner (ohne VBA)


Verfasst am:
15. Apr 2014, 23:38
Rufname:

AW: Tabellenzeilen an bestimmter Position einfügen - AW: Tabellenzeilen an bestimmter Position einfügen

Nach oben
       Version: Office 2010

Hallo Lisa,

ist ja schon mal super deine Lösung, und so schnell auch noch Smile

Die erste Abfrage funktioniert allerdings nicht, vielleicht weil als Dokumentschutz nur die Formatierungseinschränkungen (ohne Passwort) verwendet werden??? Also, es werden zwar die 2 Zeilen eingefügt, aber nicht die Formatvorlage zugewiesen und nicht die Sternchen eingegeben.

Könnte man da noch was machen?

Denn wenn ich es in ein einfaches
Code:
ActiveDocument.Unprotect
ändere, dann wird in bestimmten Fällen der Schutz nicht wieder aktiviert - und zwar dann, wenn gar nichts markiert wurde und auch wenn zwar in der richtigen Tabellenzelle aber dort im 2. Absatz markiert wurde.

An TheoS:
Es sind keine Formularfelder vorhanden! Der Schutz soll sich nur auf die Formatierung auswirken.

Ulrike
Ulrike Andrea
Word-Kenner (ohne VBA)


Verfasst am:
16. Apr 2014, 12:36
Rufname:


AW: Tabellenzeilen an bestimmter Position einfügen - AW: Tabellenzeilen an bestimmter Position einfügen

Nach oben
       Version: Office 2010

Hallo zusammen,

habe jetzt die Reihenfolge im Code etwas geändert und damit funktioniert es:

Code:
Sub TabelleZeilenEinfuegen()
 
    If Not Selection.Information(wdWithInTable) Then
    ' falls der Cursor nicht in einer Tabelle steht
        Exit Sub
        ' Makro verlassen
    End If
   
    Selection.MoveUp Unit:=wdLine, Count:=1
    ' 1 Zeile nach oben
    If InStr(1, TrimZellenInhalt(Selection.Cells(1).Range.Text), "***", vbTextCompare) = 0 Then
    ' wenn in der Zelle, in der der Cursor jetzt steht, nicht 3 Sterne stehen
        Selection.MoveDown Unit:=wdLine, Count:=1
        ' gehe wieder 1 Zeile nach unten
        Exit Sub
        ' und Makro verlassen
    End If
   
    ActiveDocument.Unprotect
   
    Selection.MoveDown Unit:=wdLine, Count:=1
   
    Selection.InsertRowsBelow 1
    Selection.InsertRowsBelow 1
    Selection.MoveUp Unit:=wdLine, Count:=1
    Selection.Style = ActiveDocument.Styles("_Sternchen")
    Selection.TypeText Text:="***"
    Selection.MoveDown Unit:=wdLine, Count:=1
   
    ActiveDocument.Protect Password:="", NoReset:=False, Type:=wdNoProtection, _
         UseIRM:=False, EnforceStyleLock:=True
         
    CommandBars("Restrict Formatting and Editing").Visible = False
    CommandBars("Styles").Visible = False
End Sub
Function TrimZellenInhalt(str As String)
    ' entfernt am Ende jeder Zelle Absatzmarke (Chr(13)) und "Zellenende" Chr(7)

    str = Left$(str, Len(str) - 2)
    TrimZellenInhalt = str

End Function


Herzlichen Dank an Lisa !!!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Word Serienbriefe: Nicht-Berücksichtigung bestimmter Abschnitte möglich? 1 Madf888 392 20. Okt 2010, 16:26
charlybrown Nicht-Berücksichtigung bestimmter Abschnitte möglich?
Keine neuen Beiträge Word Serienbriefe: Namensfelder einfügen 7 Rusdyn 1726 15. Jul 2010, 14:28
charlybrown Namensfelder einfügen
Keine neuen Beiträge Word Serienbriefe: Serienbrief mit Datenquelle in Word Spalte einfügen 1 GastB 2211 15. Mai 2010, 14:10
charlybrown Serienbrief mit Datenquelle in Word Spalte einfügen
Keine neuen Beiträge Word Serienbriefe: Adressen aus Office tabellen dokument in dokument einfügen 1 Anna-L. 1217 15. Nov 2009, 21:42
charlybrown Adressen aus Office tabellen dokument in dokument einfügen
Keine neuen Beiträge Word Serienbriefe: Bilder in Serienbrief einfügen 4 Konte 10453 05. Aug 2009, 15:28
charlybrown Bilder in Serienbrief einfügen
Keine neuen Beiträge Word Serienbriefe: Textmarken per Includetext einfügen in Abhängigkeit von ASK 0 Robotixx 1804 13. Jul 2009, 19:45
Robotixx Textmarken per Includetext einfügen in Abhängigkeit von ASK
Keine neuen Beiträge Word Serienbriefe: Einfügen von Texten mit Feldfunktionen in einem Formular 14 azse 1524 26. Feb 2009, 11:54
azse Einfügen von Texten mit Feldfunktionen in einem Formular
Keine neuen Beiträge Word Serienbriefe: Anrede einfügen 0 ArianeH 910 27. Aug 2008, 11:47
ArianeH Anrede einfügen
Keine neuen Beiträge Word Serienbriefe: mit Wenn/Dann-Bedingungsfeld Tabelle einfügen? 10 Bärbel G. 3136 17. Jul 2008, 20:00
Maulende Myrte mit Wenn/Dann-Bedingungsfeld Tabelle einfügen?
Keine neuen Beiträge Word Serienbriefe: Manuellen Seitenumbruch einfügen 1 BWolf 1400 16. Mai 2007, 21:05
Hübi Manuellen Seitenumbruch einfügen
Keine neuen Beiträge Word Serienbriefe: In einem Serienbrieg Daten aus Access einfügen 2 Dorian 980 19. Apr 2007, 10:21
Betty2004 In einem Serienbrieg Daten aus Access einfügen
Keine neuen Beiträge Word Serienbriefe: Leerzeile einfügen??? 5 tupelo1308 4360 27. März 2007, 22:20
shifra Leerzeile einfügen???
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Web Editor Forum