MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 11.10.2017, 07:59   #1
öttinger
Neuer Benutzer
Neuer Benutzer
Standard Word 2010 - Tabelle in Formular um Zeile erweitern

Hallo zusammen,

ich nutze die Funktion Bearbeitungseinschränkungen "Ausfüllen von Formularen". Mein Problem ist bei aktiver Bearbeitungseinschränkung, dass die Tabelle nicht um weitere Zeilen erweiterbar ist. Ich möchte das Dokument jedoch so entwerfen, dass bei aktiver Bearbeitungseinschränkung eine Tabelle um eine beliebige Anzahl an Zeilen erweiterbar ist.

Bisher erstelle ich vor und nach Tabellen Abschnittswechsel, welche ich von der Bearbeitungseinschränkung ausklammere. Dann ist jedoch der ganze Bereich frei editierbar.

Ich habe gelesen das man über ein Macro die Bearbeitungsbeschränkungen kurz aufhebt, die Tabelle um eine Zeile erweitert und anschließend die Bearbeitungseinschränkung wieder aktiviert. Allerdings verstehe ich bei diesem Weg nicht wie ich das Marco mit der Tabelle verknüpfe, so dass es durch den Nutzer bei bedarf ausgeführt werden kann.

Ich habe im Folgenden ein wenig Quellcode zusammen gegoogelt, wie ich mir vorstelle was die wesentlichen Teile des Macros sind, allerdings fehlt mir hier wie oben geschrieben der Einstiegspunkt, also jener der die Funktion "Tabelle" bei bedarf ausführt. Wie erstllt man diesen Einstiegspunkt?

PHP-Code:

Sub DocumentUnprotect(Passwort As String)
  If 
ActiveDocument.ProtectionType <> wdNoProtection Then
    ActiveDocument
.Unprotect Password:=Passwort
  End 
If
End Sub
Sub DocumentProtect
()
  If 
ActiveDocument.ProtectionType wdNoProtection Then
    ActiveDocument
.Protect Type:=wdAllowOnlyFormFieldsNoReset:=True
  End 
If
End Sub
Sub Tabelle
()
  
DocumentUnprotect("passwort")
  
Me.Tables.Item(1).Rows.Add()
  
DocumentProtect()
End Sub 
öttinger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.10.2017, 10:18   #2
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo öttinger,

das musst du so zusammenbasteln:
Code:

Sub Tabelle()

If ActiveDocument.ProtectionType <> wdNoProtection Then
    ActiveDocument.Unprotect Password:="Passwort"
  End If
  
 ActiveDocument.Tables.Item(1).Rows.Add
 
 
  If ActiveDocument.ProtectionType = wdNoProtection Then
    ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="Passwort"
  End If
End Sub
Allerdings ist die Frage, was du in einem geschützten Dokument davon hast, wenn eine Tabelle um eine leere- dann ebenfalls geschützte Zeile - erweitert wird. Wenn dir also obiger Code nicht weiterhilft, obwohl er funktioniert, erkläre dein Anliegen ein wenig genauer.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.10.2017, 20:25   #3
öttinger
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gehard H,

1) Warum kann man nicht Teile aus deiner Funktion in separate Funktionen packen wie ich es gemacht habe?

2) Die Tabelle soll im Prinzip um eine Zeile erweitert werden, wobei jede Zelle der neuen Zeile ein Formularfeld enthält welches trotz Bearbeitungseinschränkung editierbar ist.

Geändert von öttinger (11.10.2017 um 20:28 Uhr).
öttinger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 00:09   #4
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo öttinger,

du kannst das schon auseinandernehmen, allerdings musst du dabei die Syntax beachten (d.h. hier vor allem die Klammern hinter Rows.Add weglassen). Dann geht das auch, allerdings ist nach deiner Variante das Dokument am Ende zwar geschützt, aber ohne Passwort.

Auseinandergenommen und mit eingebauter Zeilenerweiterung würde das bei mir so aussehen:
Code:

Sub main()
DokuAuf
kopierZeile
DokuZu
End Sub

Private Sub DokuAuf()
    If ActiveDocument.ProtectionType <> wdNoProtection Then
        ActiveDocument.Unprotect password:="DeinPasswort"
    End If
End Sub

Private Sub kopierZeile()
Dim i As Integer
    With ActiveDocument
       .Tables(1).Rows.Add
        For i = 1 To .Tables(1).Columns.Count
            ActiveDocument.FormFields.Add _
                Range:=.Tables(1).Cell(.Tables(1).Rows.Count, i).Range, Type:=wdFieldFormTextInput
        Next i
    End With

End Sub

Private Sub DokuZu()
    If ActiveDocument.ProtectionType = wdNoProtection Then
        ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, password:="DeinPasswort"
    End If
End Sub
Starten tust du das ganze über Sub Main().
Damit du bei geschütztem Dokument diese Subroutine starten kannst, brauchst du entweder eine Schaltfläche in deinem Dokument (die dann aber mitgedruckt würde) oder du erstellst dir ein Symbol in der Schnellzugriffsleiste. So hab ich das im angehängten Musterdokument gemacht.
Angehängte Dateien
Dateityp: docm neueZeileMitFormularfeldern.docm (34,4 KB, 0x aufgerufen)

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 09:56   #5
öttinger
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gehard H,

1) Danke
2) Warum
PHP-Code:

ActiveDocument.FormFields.Add _ 
und nicht
PHP-Code:

.FormFields.Add _ 
3) Wäre Copy/paste der letzten Zeile auch eine Option um die Formularfelder zu erstellen?
4) Ich verstehe die Syntax bzgl des Leerzeichen in
Code:

ActiveDocument.Unprotect Password:="password"
nicht. Kannst du mir bitte ein Schlüsselwort zu dieser Syntaxkonvention nennen?

Geändert von öttinger (12.10.2017 um 10:09 Uhr).
öttinger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2017, 13:02   #6
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo öttinger,

zu 1) bitte, gern geschehen.
zu 2) ein (folgenloses) Versehen von mir

zu 3) Kopieren wäre auch möglich, aber Arbeit ersparst du dir dadurch nicht, da du ja alle Textfelder durchgehen müsstest, um ihren Inhalt zu löschen. Die entsprechende Makro-Variante würde dann so aussehen:

Code:

Sub kopierZeile2()
Dim i As Integer

    With ActiveDocument.Tables(1)
        .Rows(.Rows.Count).Range.Copy
        .Rows(.Rows.Count).Range.Paste
            For i = 1 To .Rows(.Rows.Count).Range.FormFields.Count
                .Rows(.Rows.Count).Range.FormFields(i).Result = ""
            Next i
    End With
End Sub
zu 4)
password ist ein benanntes Argument der Methode Unprotect. Es entspricht halt der Syntax, dass das erste benannte Argument von seiner Methode durch Leerzeichen getrennt wird, und mögliche weitere durch Kommata voneinander abgetrennt werden. Wenn du in der Hilfe zu Unprotect nachguckst, siehst du Beispiele dafür.

Immer wieder mal in die Hilfe zu gucken, ist eh nie verkehrt. Da wäre dir z.B. das mit rows.add() gar nicht passiert.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.10.2017, 22:37   #7
öttinger
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard H,

danke nochmal.


zu zu 4) ich war einfach nicht bei Verstand
öttinger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:28 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.