Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Word VBA Zeile anfügen
zurück: Mit Excel-Makro eine bestimmte Zelle in einer Liste finden weiter: VBA aus 2000 in 2007 Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
hannibal160383
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. Nov 2007, 15:25
Rufname:

Word VBA Zeile anfügen - Word VBA Zeile anfügen

Nach oben
       Version: Office XP (2002)

Hallo ans Forum,
ich wollte unten stehendes Makro zum anfügen einer neuen Zeile an eine Tabelle mit genau der gleichen Formatierung nutzen. Klappt soweit auch ganz gut nur will er mir in der hinzugefügten Seite in die erste Zelle kein Formularfeld machen. Kann mir da jemand weiterhelfen???

Code:
Sub Tabzeile()
'
' Zeile hinzufügen Makro
    ' Nachfrage neue Zeile
    response = MsgBox("Neue Zeile?", vbQuestion + vbYesNo)

    ' Wenn ja neue Zeile einfügen mit Formularfeldern
    If response = vbYes Then
        Dim i As Integer
        ' Dokumentschutz entfernen
        ActiveDocument.Unprotect
        ' Makro aus der letzten Zelle entfernen
        Selection.Tables(1).Cell(Selection.Tables(1).Rows.Count, Selection.Tables(1).Columns.Count).Range.FormFields(1).ExitMacro = ""
        ' Neue Zeile einfügen
        Selection.InsertRowsBelow 1
        Selection.Collapse (wdCollapseStart)
        ' Formularfelder in die Zellen einfügen
        For i = 2 To Selection.Tables(1).Columns.Count

            Selection.MoveRight Unit:=wdCell
            Selection.FormFields.Add Range:=Selection.Range, Type:=wdFieldFormTextInput
        Next i
        ' Makro in die letzte Zelle einfügen
        Selection.Tables(1).Cell(Selection.Tables(1).Rows.Count, Selection.Tables(1).Columns.Count).Range.FormFields(1).ExitMacro = "Tabzeile"
        ' zweite Zelle der letzten Zeile aktivieren
        Selection.Tables(1).Cell(Selection.Tables(1).Rows.Count, 1).Range.FormFields(1).Select
        ' Protect document
        ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
    End If
End Sub



Zuletzt bearbeitet von hannibal160383 am 10. Nov 2007, 16:43, insgesamt einmal bearbeitet
Bamberg
Excel/Access mit VBA


Verfasst am:
10. Nov 2007, 15:40
Rufname: Gerd


AW: Excel VBA Zeile anfügen - AW: Excel VBA Zeile anfügen

Nach oben
       Version: Office XP (2002)

Hallo,

bist du Dir hier sicher, dass Du im EXCEL-Forum richtig bist ?

Gruß
Gerd

_________________
NIPSILD = Nicht In Problemen, Sondern In Lösungen Denken
Kuwe
Excel-Anwender mit VBA


Verfasst am:
10. Nov 2007, 15:44
Rufname: Uwe

AW: Excel VBA Zeile anfügen - AW: Excel VBA Zeile anfügen

Nach oben
       Version: Office XP (2002)

Hab es mal nach Word VBA verschoben.

Uwe
hannibal160383
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. Nov 2007, 16:43
Rufname:

AW: Word VBA Zeile anfügen - AW: Word VBA Zeile anfügen

Nach oben
       Version: Office XP (2002)

Sorry vollkommen richtig gehört in Word
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
10. Nov 2007, 17:45
Rufname:
Wohnort: Leipzig


AW: Word VBA Zeile anfügen - AW: Word VBA Zeile anfügen

Nach oben
       Version: Office XP (2002)

Hallo Hannibal,

der Code ist zwar nicht besonders elegant, aber sollte funktionieren. An welcher Stelle tritt denn ein Fehler auf bzw. wie äußert sich der? Was geht nicht?

Deine Fehlerbeschreibung hat folgendes geschrieben:
... nur will er mir in der hinzugefügten Seite in die erste Zelle kein Formularfeld machen ...

Die Ursache dürfte ja auf der Hand liegen:
Zitat:
For i = 2 To Selection.Tables(1).Columns.Count ...

Außerdem sind die Selection.Move auch nicht unproblematisch. Am besten sagst Du mal, was genau erreicht werden soll, und dann können wir das Ganze über "saubere" Ranges lösen - das ist bedeutend zuverlässiger.

Gruß
Lisa
Gast



Verfasst am:
10. Nov 2007, 21:03
Rufname:

AW: Word VBA Zeile anfügen - AW: Word VBA Zeile anfügen

Nach oben
       Version: Office XP (2002)

Danke für deine Antwort Lisa. Also ich habe eine Tabelle mit fünf Spalten und erstmal einer Zeile. In allen Zellen sind Formularfelder da das Dokument bis auf das Ausfüllen von Formularen geschützt werden soll. Im Formularfeld der letzten Zelle soll ein Makro bei Beenden gestartet werden das den Benutzer fragt ob er eine neue Zeile will wenn ja soll er an die Tabelle eine weitere Zeile anhängen die genauso formatiert ist wie die vorige.

Groß Roland
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
10. Nov 2007, 22:40
Rufname:
Wohnort: Leipzig

Am Zeilenende im Formular neue Zeile einfügen - Am Zeilenende im Formular neue Zeile einfügen

Nach oben
       Version: Office XP (2002)

Hallo Roland,

so ich habe das mal ausführlich kommentiert gebaut. Sicherlich muss man nicht ganz so viele Containervariablen und Objekte verwenden (wie ich hier im Bsp.), es macht den Code aber übersichtlicher. Ganz wichtig ist aber: In Word kann man nicht einfach eine Zelle ansprechen mit einem Formfeld befüllen. Die Tabellenzelle hat in Word ein Endzeichen. Es muss zunächst ein Range gebildet werden, der nur den Inhalt der Tabellenzelle umfasst, also so dass das Endzeichen "ausgesperrt" ist. Ansonsten kommt es zu solchen - recht willkürlich erscheinenden - Effekten, dass die Formfelder in den falschen Zellen stehen (wie bei Dir oben beschrieben). Ich habe die Stelle im Code gekennzeichnet.


Sub WeitereZeile()
' Zeile hinzufügen Makro
Dim response As Integer
Dim myTable As Word.Table
Dim i As Integer
Dim lngRows As Long
Dim lngCols As Long
Dim LetzteZelle As Word.Cell
Dim FFZelle As Word.Cell
Dim myFF As Word.FormField
Dim rngZelle As Word.Range

' Nachfrage neue Zeile
response = MsgBox("Neue Zeile?", vbQuestion + vbYesNo)

' Wenn ja neue Zeile einfügen mit Formularfeldern
If response = vbYes Then

' Dokumentschutz entfernen, vorsichtshalber vorher testen, ob aktiviert
If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
ActiveDocument.Unprotect
End If

' Tabelle eindeutig in Range packen
Set myTable = Selection.Tables(1)

lngRows = myTable.Rows.Count
lngCols = myTable.Columns.Count

' LetzteZelle eindeutig in Range packen
Set LetzteZelle = myTable.Rows(lngRows).Cells(lngCols)

' Makro aus der letzten Zelle entfernen
LetzteZelle.Range.FormFields(1).ExitMacro = ""

' Neue Zeile einfügen, indem im letzten Feld 1x nach rechts gegangen wird
' hat den Vorteil, dass die Zeile DANACH und nicht davor eingefügt wird
LetzteZelle.Select
Selection.Collapse wdCollapseEnd
Selection.MoveRight Unit:=wdCell, Count:=1

' Formularfelder in die Zellen einfügen
For i = 1 To lngCols
Set LetzteZelle = myTable.Rows(lngRows + 1).Cells(i)
'Aus dem Range muss das Zellenendzeichen ausgeschlossen werden,
'um den Range in einer Wordtabellenzelle "sauber" zu bilden
Set rngZelle = ActiveDocument.Range(Start:=LetzteZelle.Range.Start, _
End:=LetzteZelle.Range.End - 1)

Set myFF = LetzteZelle.Range.FormFields.Add(Range:=rngZelle, _
Type:=wdFieldFormTextInput)
With myFF
'.Name = "xxx" & i
'.Range.Font.Bold = True
' Hier können weitere Eigenschaften des Feldes gesetzt werden
' besonders die Name-Eigenschaft ist zum späteren Auswerten sinnvoll
End With
' Makro in die letzte Zeile einfügen
If i = lngCols Then
myFF.ExitMacro = "WeitereZeile"
Set myFF = Nothing
Set rngZelle = Nothing
End If
Next i
' erste Zelle der letzten Zeile aktivieren
myTable.Rows(lngRows + 1).Cells(1).Select
' Protect document
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
Set LetzteZelle = Nothing
Set myTable = Nothing
End If
End Sub



_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!
Gast



Verfasst am:
11. Nov 2007, 14:45
Rufname:

AW: Word VBA Zeile anfügen - AW: Word VBA Zeile anfügen

Nach oben
       Version: Office XP (2002)

Hallo Lisa,
super vielen lieben Dank für deine Hilfe. Klappt alles perfekt. DANKE!!!
hannibal160383
Im Profil kannst Du frei den Rang ändern


Verfasst am:
22. Nov 2007, 13:50
Rufname:

AW: Word VBA Zeile anfügen - AW: Word VBA Zeile anfügen

Nach oben
       Version: Office XP (2002)

Hallo Lisa,
ich hätte zu oben genanntem Problem noch eine Nachfrage. In deinem Code aktivieren wir ja die erste Zelle der neuen Zeile. Was genau muss ich denn schreiben wenn ich die letzte Zelle der vorherigen Zeile nach Ausführen des MAkros aktiviert haben will. Vielen Dank schon mal im Vorraus. Ohne euch sähe es bei mir ganz duster aus.

Liebe Grüße
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
29. Nov 2007, 10:49
Rufname:
Wohnort: Leipzig

AW: Word VBA Zeile anfügen - AW: Word VBA Zeile anfügen

Nach oben
       Version: Office XP (2002)

Hallo Roland,

okay, hier geht's dann weiter:

Bestimmte Zelle ansteuern

Gruß
Lisa
renet
Perfektionist


Verfasst am:
06. Dez 2007, 16:39
Rufname:
Wohnort: Oldenburg

Re: Am Zeilenende im Formular neue Zeile einfügen - Re: Am Zeilenende im Formular neue Zeile einfügen

Nach oben
       Version: Office XP (2002)

Lisa - 10. Nov 2007, 21:40 hat folgendes geschrieben:
' Makro aus der letzten Zelle entfernen
LetzteZelle.Range.FormFields(1).ExitMacro = ""
Diese Zeile würde ich gerne Verwenden. Bei mir handelt es sich um das Makro für das Feld, welches gerade selektiert ist. Somit habe ich mein Glück sowohl mit Selection.FormFields(1).ExitMacro = "" als auch mit Selection.Range.FormFields(1).ExitMacro = "" versucht. Leider kam immer nur die Fehlermeldung "Laufzeitfehler '5941': Das angeforderte Element ist nicht in der Sammlung vorhanden.". Was kann ich machen? Ich habe statt "" auch schon False, None, Null und Nothing versucht (auf gut Glück) - ohne Erfolg.
_________________
LG,
renet
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
06. Dez 2007, 17:21
Rufname:
Wohnort: Leipzig

AW: Word VBA Zeile anfügen - AW: Word VBA Zeile anfügen

Nach oben
       Version: Office XP (2002)

Hallo renet,

probier mal so:
Code:
Sub FeldVonMakroBefreien()

    Dim FFName As String
    Dim myFF As Word.FormField
       
    FFName = Selection.Bookmarks(1).Name
    Set myFF = ActiveDocument.FormFields(FFName)
    myFF.ExitMacro = ""
    Set myFF = Nothing

End Sub

_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!
renet
Perfektionist


Verfasst am:
06. Dez 2007, 17:42
Rufname:
Wohnort: Oldenburg

AW: Word VBA Zeile anfügen - AW: Word VBA Zeile anfügen

Nach oben
       Version: Office XP (2002)

hat geklappt. danke! =)
_________________
LG,
renet
stegmala
VBA-Flasche


Verfasst am:
31. Aug 2012, 12:33
Rufname:
Wohnort: Hamburg


AW: Word VBA Zeile anfügen - AW: Word VBA Zeile anfügen

Nach oben
       Version: Office 2010

Hallo Lisa,

ich habe eine Frage zu diesem von Dir am 10.11.2007 erstellen Makro.
Bei mir wird nach dem ersten Durchlauf des Makros immer der Dokumentenschutz aufgehoben.

Hast du eine Idee wie ich das beheben kann?

Mit vielen Grüßen aus Hamburg

Lars
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: Serienbrief Zeile in der Anschrift löschen 6 JoAu 424 06. März 2014, 22:06
CaBe Serienbrief Zeile in der Anschrift löschen
Keine neuen Beiträge Word Serienbriefe: Serienbrief aus Excel mit Link von einzelner Zeile möglich? 0 Cantello 180 10. Jun 2013, 18:02
Cantello Serienbrief aus Excel mit Link von einzelner Zeile möglich?
Keine neuen Beiträge Word Serienbriefe: Ganze leere Zeile im Adressetikett unterdrücken 1 samtpfote67 400 21. Feb 2013, 15:51
Ute-S Ganze leere Zeile im Adressetikett unterdrücken
Keine neuen Beiträge Word Serienbriefe: Serienbrief: 1. spalte, nicht 1. zeile, als inhaltsangabe 0 Gast 394 16. Jun 2012, 18:48
Gast Serienbrief: 1. spalte, nicht 1. zeile, als inhaltsangabe
Keine neuen Beiträge Word Serienbriefe: Zeile ausblenden wenn Seriendruckfeld den Wert 0 hat 3 peter007 3053 14. Okt 2011, 13:44
charlybrown Zeile ausblenden wenn Seriendruckfeld den Wert 0 hat
Keine neuen Beiträge Word Formate: Wechseln der Formatvorlage in einer zeile 0 sven123456789 1104 04. Dez 2010, 22:32
sven123456789 Wechseln der Formatvorlage in einer zeile
Keine neuen Beiträge Word Formate: Zeileneinzug in der ersten Zeile auf geraden Seiten 2 fheck 1610 05. Okt 2010, 09:22
fheck Zeileneinzug in der ersten Zeile auf geraden Seiten
Keine neuen Beiträge Word Formate: 2 unterschiedliche Formatvorlagen in einer Zeile 2 Gast 2720 06. Aug 2010, 22:11
Lisa 2 unterschiedliche Formatvorlagen in einer Zeile
Keine neuen Beiträge Word Formate: Ungewollte eingerückte erste Zeile auf jeder Seite 3 Strilitzie 1117 05. Jul 2010, 16:31
Strilitzie Ungewollte eingerückte erste Zeile auf jeder Seite
Keine neuen Beiträge Word Serienbriefe: Mit einer Regel eine neue Zeile (b"return Taste") 8 Markerm2001 2126 13. Jun 2010, 18:20
CaBe Mit einer Regel eine neue Zeile (b"return Taste")
Keine neuen Beiträge Word Formate: Im geschützten Dokument eine weitere Zeile einfügen 0 Gast 592 23. Okt 2009, 12:55
Gast Im geschützten Dokument eine weitere Zeile einfügen
Keine neuen Beiträge Word Formate: Internetadressen in Fussnoten - sollen nicht in eigene Zeile 0 Nico79 2311 13. Okt 2009, 01:02
Nico79 Internetadressen in Fussnoten - sollen nicht in eigene Zeile
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel-Formeln