AW: Hallo Uwe.......du könntest mir helfen
11.06.2004 15:49:26
Uwe
Hallo Peter,
es geht um Bundesjugendspiele, oder? Da gibts jede Menge fertiger Lösungen im Internet. Wir machen an unserer Schule dieses Jahr zum ersten Mal die Auswertung per Computer und haben uns für eine Lösung von www.rorig.de entschieden. Druckt auch die Urkunden!!
Wie arbeitet mein Programm:
In einem Arbeitsblatt SchülerNoten werden für alle Schüler einer Klasse die Noten registriert. Für jede Klasse eine Arbeitsmappe.
Zuerst wird ermittelt, wie viele Datensätze die Datei enthält und in die Variabele LetzteZeile geschrieben. LetzteZeile = i - 2 musst du evtl. anpassen.
Dann wird Word gestartet und das Hauptdokument geladen (WordFileName = "Grundschule34.doc"). Das Hauptdokument kennt bereits die Datenquelle!!!
Naja, dann wird der Serienbrief eben erstellt und in ein neues Dokument geschrieben. Hier wird auch die Variabele LetzteZeile benötigt.
Zum Schluss gibts noch ein bisschen Suchen/Ersetzen, aber das wirst du nicht brauchen.
Übrigens, das ganze Zeugs ist nicht auf meinem Mist gewachsen. Ich habe ein Makros in Word aufgezeichnet dann bearbeitet bzw. angepasst.
Viel Glück, hoffentlich war's ne Hilfe.
Uwe
Sub ZeugnisAusgabeStarten()
Dim WordObj As Object
Dim WordFileName As String
Dim ExcelName As String
Dim i As Integer
Dim LetzteZeile As Integer
'Dieser Teil findet die letzte beschriebene Zelle
Worksheets("SchülerNoten").Select
Cells(1, 2).Select
i = 1
Do Until Cells(i, 2).Value = ""
Cells(i, 2).Select
i = i + 1
Loop
LetzteZeile = i - 2
ExcelName = ActiveWorkbook.FullName
Set WordObj = Nothing
Set WordObj = CreateObject("Word.Application.10")
WordObj.Visible = True
WordFileName = "Grundschule34.doc"
WordObj.changeFileOpenDirectory ActiveWorkbook.Path
WordObj.Documents.Open Filename:=WordFileName
With WordObj.ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = LetzteZeile
End With
.Execute Pause:=False
End With
WordObj.Windows("Grundschule34.doc").Activate
WordObj.ActiveWindow.Close
'Dieser Block sucht im Word Dorkument nach "- 0 -" und ersetzt durch "- - -"
WordObj.Windows("Serienbriefe1.doc").Activate
With WordObj.Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "- 0 -"
.Replacement.Text = "- - -"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Sub