VBA Makro von Excel aus ausführen
18.10.2017 17:45:44
Excel
ich habe unter http://www.vboffice.net/de/developers/alle-dateien-eines-ordners-senden/ ein VBA Makro gefunden, welches ich in Outlook bereits meinen Bedürfnissen entsprechend angepasst habe.
Das Makro sammelt Dateien aus mehreren Ordnern ein und versendet diese an eine festgelegte E-Mailadresse.
Leider arbeiten wir in der Firma mit Citrix (wohl keine Roaming Profile) und so ist nach jeder Abmeldung der gesamte Makro-/ VBA Code Container (this Outlook Session) leer.
An den Citrix Einstellungen können wir als Anwender nichts ändern.
Da mehrere Mitarbeiter mit dem o. g. VBA Code (Makro) arbeiten sollen, wäre bzw. ist es zu umständlich den Code jeden Tag von jedem Mitarbeiter in die VBA Console händisch einzufügen, zudem auch noch der Verweis auf die Microsoft Scripting Runtime aktiviert werden muss damit das Makro funktioniert.
Jetzt kam mir die Idee, den Code in einem Excel-Dokument unterzubringen und das Makro per Schaltfläche von einem Arbeitsblatt aus zu starten / zu benutzen.
Das Excel-Dokument kann schließlich zentral abgelegt werden und behält den einmal hinterlegten Code, im Gegensatz zu unsern Outlook-Profilen.
Nun zum eigentlichen Problem.... -Ich bin in der Makro-/ VBA Programmierung nicht wirklich _ fortgeschrittener User.... und dachte, dass der Code ohne weiteres auch in Excel funktioniert. (-War leider nicht der Fall .... ) Bei Ausführung des Codes kommt dort der Fehler
Ein benutzerdefinierter Typ ist nicht definiert.
Die erforderlichen Verweise ('Microsoft Scripting Runtime') hatte ich jedenfalls aktiviert.
Kann mir Jemand von Euch Profis helfen und mir sagen, was ich falsch mache und wie ich den Code für mein Vorhaben umgestalten muss?
Vielen vielen Dank für Eure Unterstützung....
Hier der ursprünglichen Code:
Public Sub SendAllFiles()
Dim Files As VBA.Collection
Dim File As Scripting.File
Dim Mail As Outlook.MailItem
Dim Atts As Outlook.Attachments
'Alle Dateien aus diesem Verzeichnis senden
m_Send = "C:/Beispiel/"
'Gesendete Dateien hierhin verschieben
m_Done = "C:/Beispiel/Gesendet/"
'Empfänger
m_To = ""
Set Files = GetFiles
If Files.Count Then
For Each File In Files
Set Mail = Application.CreateItem(olMailItem)
Mail.Attachments.Add File.Path
File.Move m_Done & File.Name
Mail.To = m_To
Mail.Subject = "Datei: " & File.Name
Mail.Display
Next
End If
End Sub
Private Function GetFiles() As VBA.Collection
Dim Folder As Scripting.Folder
Dim Fso As Scripting.FileSystemObject
Dim Files As Scripting.Files
Dim File As Scripting.File
Dim List As VBA.Collection
Set List = New VBA.Collection
Set Fso = New Scripting.FileSystemObject
Set Folder = Fso.GetFolder(m_Send)
Set Files = Folder.Files
For Each File In Files
'Nur die Dateien zurückgeben, die nicht versteckt sind
If (File.Attributes Or Hidden) File.Attributes Then
List.Add File
End If
Next
Set GetFiles = List
End Function