Ok,
erstelle mal ein neues Projekt und setze 1 CommandButton (Command1) drauf.
Anschließend folgenden Code in Form-modul einfügen.
(er geht ich hab's probiert!)
Option Explicit
Private Const ReadFromFile As String = "C:\email.txt"
Private Const WriteInFile As String = "C:\email2.txt"
Private Sub Command1_Click()
On Error Resume Next
' Form-Mauszeiger in Sanduhr ändern
Me.MousePointer = vbHourglass
' Form-Mauszeiger durch kurzzeitige
' Abgabe an Windows aktivieren
DoEvents
' EMail-Dateien lesen und neu erstellen
NewEMailFile
' Form-Mauszeiger wieder normalisieren
Me.MousePointer = vbDefault
End Sub
Sub NewEMailFile()
On Error Resume Next
Dim F1 As Long, F2 As Long
Dim sRead As String, lCnt As Long, sMails As String
lCnt = 0
sMails = ""
' Dateinummer für die einzulesende Datei
F1 = FreeFile
' Dateinummer für die zu schreibende Datei
F2 = FreeFile
' Quelldatei öffnen (Datei mit den EMail-Adressen)
Open ReadFromFile For Input As #F1
' wenn Fehler, dann Meldung
If Error <> "" Then
' Meldung ausgeben
MsgBox "Die Datei " & ReadFromFile & _
" konnte nicht geöffnet werden." & vbNewLine & vbNewLine & _
"Fehler: " & Err.Number & vbNewLine & "Beschreibung: " & _
Err.Description, vbExclamation
' Sub abbrechen
Exit Sub
End If
' Zieldatei neu anlegen bzw. zurücksetzen
Open "C:\email2.txt" For Output As #F2
' wenn Fehler, dann Meldung
If Error <> "" Then
' da ja Datei 1 ohne Fehler geöffnet wurde,
' muss diese wieder geschlossen werden
Close #F1
' Meldung ausgeben
MsgBox "Die Datei " & WriteInFile & _
" konnte nicht erstellt/zurückgesetzt werden." & vbNewLine & _
vbNewLine & "Fehler: " & Err.Number & vbNewLine & _
"Beschreibung: " & Err.Description, vbExclamation
' Sub abbrechen
Exit Sub
End If
' Quelldatei bis zum Ende durchlaufen
Do Until EOF(F1)
' Zählen um eins erhöhen
' (aus 10 Zeilen soll ja eine werden)
lCnt = lCnt + 1
' Zeile aus Quelldatei lesen
Input #F1, sRead
' wenn Fehler, dann Meldung
If Error <> "" Then
' Meldung ausgeben
MsgBox "Fehler beim Lesen von " & ReadFromFile & vbNewLine & _
vbNewLine & "Fehler: " & Err.Number & vbNewLine & _
"Beschreibung: " & Err.Description, vbExclamation
' Schleife abbrechen
Exit Do
End If
' --- Paket zusammenstellen ---
' wenn Paket nicht leer ist, dann Trennung rein
If sMails <> "" Then sMails = sMails & ", "
' neue Adresse dem Paket dranhängen
sMails = sMails & sRead
' wurden 10 Zeile(Adressen) eingelesen,
' dann Paket speichern
If lCnt = 10 Then
' Paket in Zieldatei schreiben
Print #F2, sMails
' Leerzeile einfügen
Print #F2, ""
' wenn Fehler, dann Meldung
If Error <> "" Then
' Meldung ausgeben
MsgBox "Fehler beim Schreiben in " & WriteInFile & vbNewLine _
& vbNewLine & "Fehler: " & Err.Number & vbNewLine & _
"Beschreibung: " & Err.Description, vbExclamation
' Schleife abbrechen
Exit Do
End If
' Paket leeren
sMails = ""
' Zählen zurücksetzen
lCnt = 0
End If
' Ende der Schleife "Do Until EOF(F1)"
Loop
' enthält das Paket noch Daten und es sind bisher keine Fehler
' aufgetreten, dann das Paket noch in die Zieldatei schreiben
If (sMails <> "") And (Error = "") Then
' Paket in Zieldatei schreiben
Print #F2, sMails
' wenn Fehler, dann Meldung
If Error <> "" Then
' Meldung ausgeben
MsgBox "Fehler beim Schreiben in " & WriteInFile & vbNewLine & _
vbNewLine & "Fehler: " & Err.Number & vbNewLine & _
"Beschreibung: " & Err.Description, vbExclamation
End If
End If
' Zieldatei schließen
Close #F2
' Quelldatei schließen
Close #F1
End Sub Viel Spass,
R@lf |