MS-Office-Forum

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

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 08.11.2018, 15:41   #1
Glutbart
Neuer Benutzer
Neuer Benutzer
Standard VBA - Word 2016 Zeile automatisch an Tabelle anfügen.

Guten Tag meine Damen und Herren,

ich bin ein blutiger Visual Basic Anfänger (absolut keine Erfahrung - ich kann ein bisschen HTML u. CSS ... mehr net..) und benötige für meine Arbeit ein Überwachungsinstrument (Studienverlauf) in Form eines Wordformulars. Die Grundstruktur steht, lediglich an der Funktionalität scheitert es...
Ich habs mit aufgezeichneten Makros versucht, brachte aber nie das gewünschte Ergebnis.

Hier könnt ihr euch das Formular anschauen.

Studienverlauf_Test.docx

Die Studenten die mein Formular verwenden sollen können wenig, bis garnicht, mit Word umgehen, daher soll das Dokument später Passwortgeschützt sein um Veränderungen an der Formatierung zu vermeiden. Die Studenten sollen nur die Formularfelder verwenden können, und die komplette Tabelle (Semester, mit "leeren" Formularfeldern) mit dem Button, einfügen oder entfernen können. Und innerhalb auch nochmal die Möglichkeit haben neue Zeilen (Lehrveranstaltungen, mit leeren Formularfeldern) hinzuzufügen.

Vielleicht kann man es bei den Zeilen (Lehrveranstaltung) auch so machen, dass sobald etwas eingegeben ist unten automatisch eine neue "leere" Zeile auftaucht ?

Also für mich ist das hier ein harter Brocken.... Es ist schlimm zu Wissen, dass es möglich ist, aber unfähig ist es selber hinzubekommen...

Ich habs schon mit einigen Codeschnipseln aus dem Internet versucht, aber will nicht so richtig, lediglich mit dem Aufheben und neu einsetzten des Passwort klappte ganz gut :/
____________________________________

'
' Zeile_einfuegen Makro
'
'
Set aDoc = ActiveDocument

If aDoc.ProtectionType <> wdNoProtection Then
aDoc.Unprotect Password:="test"

Selection.Rows(1).Select
Selection.Copy
Selection.Paste
aDoc.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="test"
End If

End Sub

___________________________________

Für eure Hilfe wäre ich echt dankbar, ich würde auch etwas zu Belohnung springen lassen wenn wir das irwie schnell zum laufen bekommen würden ,
Bier per Post oder so

MFG
Glutbart

Geändert von Glutbart (08.11.2018 um 16:14 Uhr).
Glutbart ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.11.2018, 15:56   #2
Glutbart
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Datei

Hier nochmal die Datei über das Board.

Ich freu mich über eure Hilfe

MFG
Glutbart
Angehängte Dateien
Dateityp: docx Studienverlauf_Test.docx (22,2 KB, 4x aufgerufen)
Glutbart ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.11.2018, 17:50   #3
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Glutbart,

viel Text, wenig Makro:

Deine Tabellen sind unter dem Aspekt der VBA-technischen Behandlung denkbar ungünstig aufgebaut. Als Erstes schlag ich dir einige Änderungen an deinem Dokument vor:
  • Verabschiede dich von dem Tabelle-In-Tabelle-Sytem. Im Zusammenhang mit der VBA-technischen Bearbeitung führt sowas nur zu Umständlichkeiten und Verdruss. Die Rahmen kannst du notfalls auch Autoform-Linien erstellen, wenn sie dir wichtig sind.
    .
  • Trenne die Tabelle "Semester" und die Tabelle "Lehrveranstaltungen" voneinander. Denn Tabellen mit verschiedenen Spaltenanzahlen tragen nochmal extra zum o.g. Verdruss bei. Den Abstand zwischen beiden Tabellen kannst du mittels Schriftgröße und Absatzabstand der zwischenliegenden Absatzmarke regeln.
    .
  • Vermeide auch innerhalb der Tabelle "Lehrveranstaltungen" unterschiedliche Zeilen- und Spaltenanzahlen. Das ist in deinem Fall recht einfach: Um gleiche Spaltenanzahlen zu erreichen, füge in der ersten Zeile jeweils hinter "Versuch" eine vertikale Trennlinie ein, die du rahmenlos formatieren kannst.
    Um gleiche Zeilenanzahlen zu erhalten, füge in den ersten drei Zellen der zweiten Zeile eine horizontale Trennlinie ein (ich hab im angehängten Dokument die Rahmen dringelassen).
    .
  • Damit du später weißt, welches Makro für welche Schaltfläche zuständig ist, ist es empfehlenswert, denen "sprechende" Namen zu geben. Das erledigst du, indem du in die Entwurfsansicht schaltest und auf Eigenschaften klickst. Im angehängten Musterdokument hab ich der Schaltfläche "Zeile einfügen" den Namen cmdEinfuegen verpasst.
    .
  • Du kannst nicht mit Selection arbeiten, wenn du das Makro via Button unterhalb der Tabelle starten willst. Denn durch den Klick liegt die Selection auf dem Button, nicht mehr in der Tabelle.
    Damit das geplante Makro trotzdem die gewünschte Tabelle zielsicher identifizieren kann, füge in die Tabelle "Lehrveranstaltungen" eine Textmarke ein. Tu das bei blinkender Schreibmarke, z.B. in der ersten Tabellenzelle. Im angehängten Beispiel hab ich sie "Nachweise" genannt.
    .
  • Wenn das alles erledigt ist, speichere das Dokument als Dokument mit Makros (entweder im Format *.docm oder als Dokumentvorlage im Format *.dotm).
Wir schreiten nunmehr endlich zum Makro. Du findest es im Modul ThisDocument, und so sieht es aus:
Code:

Private Sub cmdEinFuegen_Click()
Dim tabelle As Table, letzteZeile As Row

With ActiveDocument
        If .ProtectionType <> wdNoProtection Then
            .Unprotect Password:="test"
        End If
    Set tabelle = ActiveDocument.Bookmarks("Nachweise").Range.Tables(1)
    Set letzteZeile = tabelle.Rows(tabelle.Rows.Count)
    letzteZeile.Range.Copy
    letzteZeile.Range.PasteAppendTable
        If .ProtectionType = wdNoProtection Then
            .Protect Type:=wdAllowOnlyFormFields, noreset:=True, Password:="test"
        End If
End With
End Sub
Wir sind allerdings noch nicht zu Ende mit den Bedenken:
  • Die kopierte Zeile enthält natürlich die Einträge der Zeile darüber. Entweder du vertraust auf deine Studenten, dass sie das selbständig überschreiben, oder das Makro muss es tun (was einige Zeilen Code bewerkstelligen könnten).
    .
  • Wichtiger dagegen ist, dass die Schaltfläche nur funktioniert, wenn das Dokument in einem sog. vertrauenswürdigen Speicherort gespeichert ist. Wenn nicht, wird das Makro blockiert und die Schaltfläche ist nicht klickbar. Da musst du ganz fest dran glauben, dass deine Studenten das hinbekommen. Dazu müssen sie auf ihrem Rechner in die Word-Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Vertrauenswürdige Speicherorte, und dort nachsehen, ob sie so einen Speicherort haben oder eben einen erstellen.
Angehängte Dateien
Dateityp: dotm Glutbart_Studienverlauf_Vorlage.dotm (31,5 KB, 11x aufgerufen)

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.11.2018, 19:22   #4
Glutbart
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Wow

Hallo Gerhard H,

Vielen Dank für deine schnelle und extem ausführliche Antwort.
Ich Dämel habe natürlich jetzt meinen Laptop mit Word auf der Arbeit stehen lassen. Naja, dann kann ich mich halt erst Montag damit befassen.

Des einzige was mich jetzt schon nervös macht ist die Sache mit dem "vertrauenswürdigen Speicherplatz", ich hab jetzt gerade kein Word parat, aber das macht die Geschichte wieder sehr Benutzerfreundlich für meine Studenten
Also als ich mir hier meinen ersten Prototyp gebastelt hatte, konnte ich das Dokument mit Marko speichern und wieder ausführen, ohne den Speicherort als "vertrauenswürdig" deklarieren.

Da muss ich wahrscheinlich ne kleine Handlungsanweisung an das Dokument anfügen, damit der DAU des auch hinbekommt...

Ich melde mich am Montag mal mit dem geänderten Layout.

MFG
Glutbart
Glutbart ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.11.2018, 20:16   #5
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo nochmal,

vielleicht speicherst du ja schon in einen vertrauenswürdigen Ordner und weißt es nur nicht.
Außerdem ist die Festlegung eines vertrauenswürdigen Speicherorts nur eine von mehreren Möglichkeiten, das Blockieren von Makros aufzuheben.

Du könntest z.B. im Sicherheitscenter unter Einstellung für Makros die Option Alle Makros aktivieren einstellen, was aber wegen Virengefahr nicht empfohlen wird. Außerdem müsste das jeder an seinem PC selber einstellen.

Du könntest auch beim erstmaligen Öffnen eines Dokumens mit Makros die standardmäßige Sicherheitswarnung (gelber Balken überm Dokument) mit Inhalt aktivieren quittieren. Ab dann ist es ein vertrauenswürdiges Dokument, unabhängig von seinem Speicherort.

Mir kommt die Variante mit dem Speicherort am einfachsten und sichersten vor. Eine Anleitung dazu musst du nicht selber schreiben, die gibts massenhaft im Netz, z.B. von Microsoft selber: https://support.office.com/de-de/art...3-4e7c67147fb4

__________________

Gruß
Gerhard
Gerhard H 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 21: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 - 2018, Jelsoft Enterprises Ltd.

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