Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1560to1564
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro wiederholen / Versand Tabellen als Anhang

Makro wiederholen / Versand Tabellen als Anhang
04.06.2017 09:30:47
Markus
Guten Tag
Ich habe ein Makro, welches es ermöglicht, ein Tabellenblatt als Anhang per Email zu versenden. Die Tabelle wird aufgrund diverser Bedingungen befüllt. Das Makro funktioniert sehr gut, jedoch möchte ich den Versand an verschiedene Empfänger automatisieren. Bedeutet, das Makro soll so oft starten, wie in der Tabelle "Fehlererfassung" Spalte "K" Werte vorhanden sind.
Wäre toll, wenn mir jemand weiterhelfen könnte.
Private Sub CommandButton1_Click()
Dim MyMessage As Object, MyOutApp As Object
Dim SavePath As String
Dim AWS As String
Worksheets("Meldung gestrichene Artikel").Range("C4").Value = Worksheets("Fehlererfassung"). _
_
_
_
Range("K4").Value
SavePath = "Platzhalter" '"E:\Eigene Dateien"
'Kopiert aktuelles Sheet in eine neue Mappe
'welche nur diese Tabelle enthält
ActiveSheet.Copy
'Speichert die Datei unter dem Tabellennamen und einem Zeitstempel
ActiveSheet.UsedRange.Cells = ActiveSheet.UsedRange.Cells.Value
ActiveWorkbook.SaveAs SavePath & "\" & ActiveSheet.Name, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled
'Mappenname wird an Variable übergeben
'und anschliessend gleich geschlossen
With ActiveWorkbook
AWS = .FullName
.Close
End With
'InitializeOutlook = True
Set OutLookJob = CreateObject("Outlook.Application")
'Nachrichtenobject erstellen
Set E_Mail = OutLookJob.CreateItem(0)
E_Mail.To = Range("C8")
E_Mail.Subject = "Platzhalter" & Date & Time
'Hier wird die temporär gespeicherte Datei als
'Attachment zugefügt
E_Mail.Attachments.Add AWS
'Hier wird die HTML Mail erstellt
E_Mail.body = "Platzhalter"
'Hier wird die Mail nochmals angezeigt
E_Mail.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'.Send
'Hier wird die temporäre Datei wieder gelöscht
E_Mail.send
Kill AWS
Set E_Mail = Nothing
Set OutLookJob = Nothing
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nicht ganz eindeutig ...
04.06.2017 11:26:59
Matthias
Hallo
=ANZAHL2(K:K) liefert Dir z.B. die Anzahl nicht leerer Zellen in einem Bereich.
Also schreibst Du das Ergebnis in eine Variable. In VBA heißt das COUNTA
Mit einer Schleife kannst Du dann das Makro so oft durchlaufen, wie Du es möchtest
Es erschliesst sich mir aber nicht warum Du z.B. wenn es 8 Einträge in Spalte(K) gibt
8x an die gleiche Mailadresse versenden willst.
E_Mail.To = Range("C8")
Gruß Matthias
AW: nicht ganz eindeutig ...
04.06.2017 12:04:53
Markus
Hallo Matthias
Besten Dank für deine Unterstützung. Die Mailadresse in C8 ändert sich, wenn die neuen Daten aus der Spalte K in C4 eingelesen werde. Zusammen mit den übrigen Formulardaten, welche mit Formeln ermittelt werden.
Kannst du mir mit COUNTA und der Schleife im Code helfen?
Besten Dank und einen schönen Tag.
Anzeige
Bsp. für eine Schleife ...
04.06.2017 16:19:03
Matthias
Hallo
Schreib mal bspw. in K1 bis K10 irgend etwas rein.
Sub schleife()
Dim X&, i&
X = Application.WorksheetFunction.CountA(Columns(11))
MsgBox X & " Einräge in Spalte K"
For i = 1 To X
MsgBox Cells(i, 11)
'anstatt der Box hier Deinen Code
Next
End Sub
Gruß Matthias
AW: Bsp. für eine Schleife ...
04.06.2017 20:30:34
Markus
Hallo
Besten Dank - irgendwie habe ich mein Problem wohl falsch beschrieben. Ich benötige in C4 pro Durchlauf den jeweiligen Wert aus der Spalte K. So wie ich den Code nun umgebaut habe, habe ich entweder die Zahl 1 oder das total der Werte. Gibt es eine Möglichkeit jeweils den entsprechenden Wert (Zahl) in die Zelle zu schreiben?
Private Sub CommandButton1_Click()
Dim MyMessage As Object, MyOutApp As Object
Dim SavePath As String
Dim AWS As String
Dim X&, i&
X = Application.WorksheetFunction.CountA(Columns(11))
MsgBox X & " Einträge in Spalte K"
For i = 1 To X
Range("C4").Value = i
SavePath = "Platzhalter" '"E:\Eigene Dateien"
'Kopiert aktuelles Sheet in eine neue Mappe
'welche nur diese Tabelle enthält
ActiveSheet.Copy
'Speichert die Datei unter dem Tabellennamen und einem Zeitstempel
ActiveSheet.UsedRange.Cells = ActiveSheet.UsedRange.Cells.Value
ActiveWorkbook.SaveAs SavePath & "\" & ActiveSheet.Name, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled
'Mappenname wird an Variable übergeben
'und anschliessend gleich geschlossen
With ActiveWorkbook
AWS = .FullName
.Close
End With
'InitializeOutlook = True
Set OutLookJob = CreateObject("Outlook.Application")
'Nachrichtenobject erstellen
Set E_Mail = OutLookJob.CreateItem(0)
E_Mail.To = Range("C8")
E_Mail.Subject = "Platzhalter" & Date & Time
'Hier wird die temporär gespeicherte Datei als
'Attachment zugefügt
E_Mail.Attachments.Add AWS
'Hier wird die HTML Mail erstellt
E_Mail.body = "Platzhalter"
'Hier wird die Mail nochmals angezeigt
E_Mail.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'.Send
'Hier wird die temporäre Datei wieder gelöscht
E_Mail.send
Kill AWS
Set E_Mail = Nothing
Set OutLookJob = Nothing
Next
End Sub

Anzeige
AW: Bsp. für eine Schleife ...
05.06.2017 08:53:16
Matthias
Hallo
Ich weiß ja nicht in welcher Zeile in Spalte(K) Deine Daten beginnen.
Könnte also so sein, wenn Deine Daten der Spalte(K) auch in Zeile(4) beginnen.
Range("C4").Value = Range("K"& i + 3).Value
(das wäre im 1.Durchlauf K4 dann K5 usw.)
Gruß Matthias
AW: Bsp. für eine Schleife ...
05.06.2017 20:11:52
Markus
PERFEKT - BESTEN DANK für die super Hilfestellung
Freundliche Grüsse
Markus

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige