Getagged: VBA

Excel – Serienmail mit Anhängen

Serienmails können über Word / Outlook leider nur ohne Anhänge verschickt werden. Warum also nicht die Serienmail über Excel starten und so beliebig Anhänge mitschicken?

Hier ist der Code:
Option Explicit

Sub Excel_Serial_Mail()
‚Andreas Thehos
http://thehosblog.com

Dim objOLOutlook As Object
Dim objOLMail As Object
Dim lngMailNr As Long
Dim lngZaehler As Long
Dim strAttachmentPfad1 As String, strAttachmentPfad2 As String
Dim strSignatur As String

On Error GoTo ErrorHandler

Set objOLOutlook = CreateObject(„Outlook.Application“)
lngMailNr = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

’strAttachmentPfad1 = „C:\Users\Andreas\Documents\Spenden Kinder-Tafel.docx“
’strAttachmentPfad2 = „C:\Users\Andreas\Documents\YouTube\YouTube 2.jpg“
‚Hier Pfade und Dateien anpassen

For lngZaehler = 2 To lngMailNr
If Cells(lngZaehler, 1) „“ Then
Set objOLMail = objOLOutlook.CreateItem(olMailItem)
With objOLMail
.To = Cells(lngZaehler, 1)
.CC = „“
.BCC = „“
.GetInspector.Activate
strSignatur = .Body
.Sensitivity = 3
.Importance = 2
.Subject = „Vorgabe Wochenplan“
.BodyFormat = olFormatPlain
.Body = „Hallo “ & Cells(lngZaehler, 3) & „,“ & vbCrLf & _
Cells(lngZaehler, 2).Value & “ ist die Zahl des Tages.“ & vbCrLf & strSignatur

‚Hier anpassen
‚.Attachments.Add strAttachmentPfad1
‚.Attachments.Add strAttachmentPfad2
.Display
.Send
‚.Display
End With
Set objOLMail = Nothing
End If
Next lngZaehler
Set objOLOutlook = Nothing

Exit Sub

ErrorHandler:
MsgBox Err.Number & “ “ & Err.Description & “ “ & Err.Source, _
vbInformation, „Ein Fehler ist aufgetreten“
Exit Sub
End Sub

 

Hier ist die Datei:
http://1drv.ms/1kgYEx0

Hier geht es zum Video:

Videolink: http://youtu.be/i-gvQQ0749Y

Excel VBA – Dateieigenschaften verändern

Über VBA können die Eigenschaften einer Arbeitsmappe verändert werden. Die Eigenschaften müssen zum Teil manuell gefüllt werden (Firma, Schlüsselwörter, Kategorie), zum Teil setzen diese sich bei der Arbeit mit der Mappe automatisch zusammmen (Author, Erstelldatum).

Die Eigenschaften sind unter Datei Informationen im rechten Bereich zu finden.

Das folgende Makro listet alle Eigenschaften der ActiveWorkbook.BuiltinDocumentProperties auf:

Sub Liste_der_Eigenschaften()
Dim intWert As Integer
'Quelle: "http://msdn.microsoft.com/de-de/library/office/ff197172(v=office.15).aspx"
intWert = 1
Worksheets(1).Activate
For Each prop In ActiveWorkbook.BuiltinDocumentProperties
Cells(intWert, 1).Value = intWert
Cells(intWert, 2).Value = prop.Name
intWert = intWert + 1
Next
End Sub

Nicht alle Dokumenteigenschaften sind direkt über Datei Informationen einsehbar. Andere werden errechnet. Folgende Liste resultiert im ersten Tabellenblatt:

1 Title
2 Subject
3 Author
4 Keywords
5 Comments
6 Template
7 Last author
8 Revision number
9 Application name
10 Last print date
11 Creation date
12 Last save time
13 Total editing time
14 Number of pages
15 Number of words
16 Number of characters
17 Security
18 Category
19 Format
20 Manager
21 Company
22 Number of bytes
23 Number of lines
24 Number of paragraphs
25 Number of slides
26 Number of notes
27 Number of hidden Slides
28 Number of multimedia clips
29 Hyperlink base
30 Number of characters (with spaces)
31 Content type
32 Content status
33 Language
34 Document version

Die Zahlen oder die Namen können nun genutzt werden, die Eigenschaften des aktiven Dokuments zu verändern.
Über das folgende Makro setze ich die Dokumenteigenschaften auf von mir vordefinierte Wert:

Sub Eigenschaften_Arbeitsmappe()
'Andreas Thehos, 2013
If Workbooks.Count >= 1 Then 'Prüft, ob mindestens eine Arbeitsmappe vorliegt
With ActiveWorkbook.BuiltinDocumentProperties 'Setzt die Eigenschaften der aktiven Mappe
.Item("Title") = "YouTube-Tutorial athehos"
.Item("Keywords") = "Excel, Office, Thehos, athehos"
.Item("Comments") = "Excel online lernen"
.Item("Category") = "YouTube, Excel, Office, athehos"
.Item("Subject") = "YouTube-Tutorial"
.Item("Hyperlink base") = "http://thehosblog.com"
.Item("Creation date") = Now
.Item("Company") = "at IT-Training & Beratung"
.Item("Manager") = "Andreas Thehos"
.Item("Author") = "Andreas Thehos"
End With
End If
End Sub

Zum YouTube-Video: