Hallo,
ich möchte unter dem Namen MLP (siehe Multilernprofi.de) Lehrern die Möglichkeit geben, Ihre Aufgaben in Word zu erstellen. Das Programm selbst soll Freeware sein. Auf der Internetseite bezieht sich der Preis auf die CD mit den Lektionen.
Die Antworten gibt der Lehrer in doppelten Klammern ein
5 + 5 = ((10)) oder mit Hilfe des Formulardesigners.
Nach Öffnen der Datei werden die Antworten durch Textformularfelder ersetzt. Der Schüler gibt seine Antworten ein und lässt diese auf Richtigkeit kontrollieren.
Er hat mehrere Möglichkeiten (siehe im „Quelltext“ unter sub MLP_Hilfe()
Wenn das tatsächlich läuft, soll es auch auf Kontrollkästchen-Formularfelder und Dropdown-Formularfelder erweitert werden.
Zur leichteren Eingabe für den Lehrer sollten noch Markierungen der Antwort wie ((K:x)) für Kontrollkästchen bzw. ((D:1|5|10)) für Dropdown statt dem Anlegen von Formularfeldern möglich sein.
Das Textformularfeld wäre entsprechend ((10)) bzw. ((T:10)) oder (mit Alternativantworten ((10|zehn)) bzw. ((T:10|zehn)) - aber das ist erst einmal Zukunftsmusik.
Wer kann mir helfen?
Im Sourcecode müssten die Felder bzw. das Formular entsprechend geschützt bzw. der Schutz aufgehoben werden.
Bitte noch nicht loslegen sondern erst einmal mailen an …
So weit ich gekommen bin habe ich alles vorbereitet:
Ein Sourcecode von WordAutor (= einem ähnlichen Programm in VBA) liegt vor.
Hier nun meine bescheidenen Anfänge:
Sub AutoExec()
’ soll bei Öffnen der Datei ausgeführt werden - macht es aber nicht
’ Makro erstellt am 02.04.2008 von test
’ Lehrer stellt Makrosicherheit auf hoch, da sonst diese
’ Schülerversion startet!
Rem *** In den Vollbildmodus wechseln
ActiveWindow.View.FullScreen = True
Call MLP_Hilfe
Rem *** Wird das Dokument zum ersten Mal geöffnet sollen alle
Rem *** Formularfelder gelöscht werden
Call MLP_loeschen
Rem *** nun wird AutoExec selbst gelöscht, damit es beim nächsten
Rem *** öffnen der Datei nicht mehr aktiv ist
’ ActiveDocument.Unprotect
’ ActiveDocument.FormFields(„AutoExec“).Delete
’ Selection.Delete Unit:=1, what:=wdCharacter
’ ActiveDocument.Protect wdAllowOnlyFormFields, True
End Sub
Sub MLP_Hilfe()
’
’ Tastenkombination alt+ h: h_ilfe Makro
’ Makro aufgezeichnet am 31.03.2008 von test
Call MsgBox _
(„Alle Lücken sollen ausgefüllt werden!“ & vbCrLf & _
" " & vbCrLf & „Man kann“ & vbCrLf & _
„> zum Vollbild wechseln“ & vbCrLf & _
„> sich den nächsten Buchstaben anzeigen lassen“ & vbCrLf & _
„> eine Kontrolle der Eingaben anfordern, sowie“ & vbCrLf & _
„> alle Eingaben löschen und“ & vbCrLf & _
„> alle Lösungen anzeigen lassen.“, _
vbOKOnly, „Multilernprofi“)
End Sub
Sub MLP_kontrollieren()
’ Vergleicht die Eingaben mit dem Vorgabetext
’ hier: Textfeld (richtig gelöste Textfelder haben grünen
’ Hintergrund und brauchen nicht kontrolliert zu werden
’ For Each lfdNummer In ActiveDocument.FormFields.Text
’ If ActiveDocument.FormFields.Text.Background green Then
’ selektiere Antwortmöglichkeiten (BRD|Deutschland|Germany)
’ if ltrim(rtrim(Antwort)) = eine ltrim(rtrim(Antwortmöglichkeit))
’ ActiveDocument.FormFields.Text.Background = green
’ Schreibschutz für dieses Feld
’ else
’ lösche Text ab erstem falschen Zeichen
’ end if
’ end if
’ Next
Call MsgBox(„Alle richtigen Antworten wurden übernommen.“ _
, vbOKOnly, „Multilernprofi Kontrolle:“)
’ später kommt hier noch die Auswertung hin
End Sub
Sub MLP_loeschen()
’
’ Nicht durch Freigeben und erneutes Schützen des Formulars löschen,
’ weil dann die Vorgabewerte (= Musterantworten) angezeigt werden
If MsgBox(„Möchten Sie wirklich alle Antworten löschen?“ _
, vbQuestion + vbYesNo, „Multilernprofi Löschen:“) = vbYes Then
’ For Each lfdNummer In ActiveDocument.FormFields.Text
’ ActiveDocument.FormFields.Text = „“
’ ActiveDocument.FormFields.Text.Background = grey
’ next
End Sub
Sub MLP_naechsterBuchstabe()
’
’ Tastenkombination alt+ n: n_ächsten richtigen Buchstaben anzeigen
’ Makro aufgezeichnet am 31.03.2008 von test
’ Gilt nur für Textfelder!
If .FormFields(„T“).Disabled Then
Beep
Else
x = 1: richtigerText = „“
Do While Mid(Loesung, x, 1) = Mid(Inhalt(Formularfeld), x, 1)
richtigerText = richtigerText + Mid(Loesung, x, 1)
Loop
’ nächsten richtigen Buchstaben hinzufügen
If (Len(richtigerText))