Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1584to1588
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

VBA Makro von Excel aus ausführen

VBA Makro von Excel aus ausführen
18.10.2017 17:45:44
Excel
Hallo zusammen,
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

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Damit der Code unter...
19.10.2017 05:50:00
Case
Hallo, :-)
... Excel brummt musst Du etwas anpassen: ;-)
Zu Citrix kann ich nichts sagen, aber folgender Code rennt in Excel OHNE Verweise: ;-)
Option Explicit
Private m_Send As String
Private m_Done As String
Private m_To As String
Public Sub SendAllFiles()
Dim Files As Collection
Dim File As Object
Dim Mail As Object
Dim Atts As Object
m_Send = "C:\Temp\AA\" ' Anpassen!!!!
m_Done = "C:\Temp\BB\" ' Anpassen!!!!
m_To = "a@b.de" ' Anpassen!!!!
Set Files = GetFiles
If Files.Count Then
Set Mail = CreateObject("Outlook.Application").CreateItem(0)
For Each File In Files
Mail.Attachments.Add File.Path
File.Move m_Done & File.Name
Next File
Mail.To = m_To
Mail.Subject = "Anbei die Dateien"
Mail.Display
End If
Set Files = Nothing
Set Mail = Nothing
End Sub
Private Function GetFiles() As Collection
Dim Folder As Object
Dim Fso As Object
Dim Files As Object
Dim File As Object
Dim List As Collection
Set List = New Collection
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Folder = Fso.GetFolder(m_Send)
Set Files = Folder.Files
For Each File In Files
If Not File.Attributes And 2 Then
List.Add File
End If
Next File
Set GetFiles = List
Set List = Nothing
Set Fso = Nothing
Set Folder = Nothing
Set Files = Nothing
End Function
Ich habe den Code nicht verändert, sondern nur unter Excel lauffähig gemacht. ;-)
Pfade musst Du natürlich noch anpassen.
Servus
Case

Anzeige

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige