Hallo Wolfgang,
schonmal vorab: Die Aufgabe lässt sich nur mit VBA lösen.
aus dem Tabellenblatt2 sollen mehrere Dateien, die als Name
Bericht&Name aus der Liste (Tabellenblatt1) erhalten, in einem
Verzeichnis C:\daten\Bericht…xls abgelegt werden.
Allerdings
sollen die Dateien ohne Formeln erzeugt werden, nur mit den
Werten.
Es sollen ca. 30 Dateien erzeugt werden, soviele Dateien wie
Namen in der Liste stehen.
Im Anschluss sollen diese dann per
Email verschickt werden, wieder nach einer Liste von Usern.
Ich setze jetzt mal voraus:
- Jeder Empfänger bekommt den gleichen Bericht (Tabelle2)
- In Tabelle1 ist eine Liste mit den (genau 30) Empfängernamen (A2:A31) und deren Emailadressen (B2:B31)
(Sollte 1. nicht zutreffen, (wird es kompliziert) wäre eine weitere VBA-Funktion notwendig, mit der ich die Daten in Tabelle2 einschränken würde. Einen solchen Bericht würde ich dann vorzugsweise als Pivottabelle konstruieren.)
Was soll das Makro machen:
Du musst in einem Programm mit einer Schleife die Tabelle mit den 30 Einträgen durchgehen. Bei jedem Durchgang liest du den Namen der Person, und die Email-Adresse aus. Dann bestimmst du den Namen der neuen Datei und übergibst diesen einer Funktion, die das gewünschte Blatt in einen neue Mappe kopiert, alles darauf kopiert und nur noch die Werte einfügt, die Datei speichert, die Datei verschickt, die Datei schließt. Das wars.
Für mich, ist dies eine schwierige Aufgabe, aber ich weiss,
dass es im Forum Fachleute gibt die dies umsetzen könnten.
Prinzipiell ist das nix Besonderes. Ich habe den Code der genau das Beschriebene macht(siehe unten) mal schnell zusammengeschrieben. Ich habe den Code aber nicht getestet, deshalb könnten noch Bugs drinnen sein. Etwas Arbeit muss auch noch für Dich übrigbleiben. 
Achtung:
Je nachdem wie Dein Outlook eingestellt ist, ballert er Dir sofort die erstellten Emails raus.
PS: Mit dem „Click-Yes“ Tool brauchst du später nicht jede Email bestätigen.
MfG
Stephan
Code:
Sub Programm()
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Dim i As Integer
Dim strName As String
Dim strEmail As String
Dim strBetreff As String
Dim strTabelleListe As String
Dim strTabelleBericht As String
Dim strDateiName As String
Dim strDatum As String
strDatum = Format(Now(), „YYYY-MM-DD“)
'Tabelle, in die Personen stehen
strTabelleListe = „Tabelle1“
'Tabelle die als Bericht gespeichert werden soll
strTabelleBericht = „Tabelle2“
Sheets(strTabelleListe).Activate
For i = 2 To 31
strName = Range(„A“ & i).Value
strEmail = Range(„B“ & i).Value
strDateiName = "C:\daten\Bericht - " & strName & " - " & strDatum & „.xls“
strBetreff = "Bericht für " & strName & " - " & strDatum
Call fn_KopierenSpeichern(strDateiName, strTabelleBericht, strEmail, strBetreff)
Next i
MsgBox „Fertisch“
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
End Sub
Function fn_KopierenSpeichern(strDatei As String, strBlatt As String, strEmail As String, strBetreff As String)
Sheets(strBlatt).Copy
Cells.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range(„A1“).Select
ActiveWorkbook.SaveAs Filename:=strDatei
ActiveWorkbook.SendMail Recipients:=strEmail, Subject:=strBetreff
ActiveWindow.Close
End Function