2.2k Aufrufe
Gefragt in Textverarbeitung von Einsteiger_in (47 Punkte)
Guten Tag,
Ich habe ein Problem mit einen Makro , es soll die Dateien eines Ordners mit Outlook
verschicken
hier das Makro
Bekomme aber immer einen Debugger bei
 For Each File In Files
wenn mir jemand helfen könnte.

Public Sub SendAllFiles()
  Dim objOutlook As Object
Dim objMail As Object

Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)

With objMail
  
  'Alle Dateien aus diesem Verzeichnis senden
  m_Send = "C:\Users\"
  
  'Gesendete Dateien hierhin verschieben
  m_Done = "C:\Users2\"
  
  'Empfänger
  m_To = "@t-online.de"
  
  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 With
End Sub

Private Function GetFiles() As VBA.Collection
  Dim objOutlook As Object
  Dim objMail As Object
  

  Dim List As VBA.Collection
  
  Set List = New VBA.Collection
  
  
End Function

16 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

das liegt wohl daran, dass du File und Files nicht deklariert hast.
Schau dir mal das entsprechende Makro hier an: [url=http://www.vboffice.net/de/developers/alle-dateien-eines-ordners-senden]KLICK[/url]

Gruß

M.O.
0 Punkte
Beantwortet von Einsteiger_in (47 Punkte)
Hallo ab hier bekomme ich immer Debugger

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 With
End Sub

Private Function GetFiles() As VBA.Collection
Dim objOutlook As Object
Dim objMail As Object


Dim List As VBA.Collection

Set List = New VBA.Collection


End Function
Könnten Sie mir da weiter helfen
MfG
0 Punkte
Beantwortet von
hast du jetzt deklariert oder nicht?

"bekomme ich immer Debugger"
und der sagt was?
der Debugger stößt einen idR. schon auf in Richtung Ursache
0 Punkte
Beantwortet von Einsteiger_in (47 Punkte)
Hallo, bitte was ist deklariert ich bin nicht so fit mit den Makros
Laufzeitfehler 424 Objekt erforderlich
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

schau dir die Makros unter meinem oben geposteten Link bei "Alle Dateien einzeln versenden" an. Dann siehst du z.B. dass bei dir im Makro SendAllFiles die folgende Deklaration fehlt:
[code]Dim Files As VBA.Collection
Dim File As Scripting.File[/code]
Außerdem ist die Function GetFiles bei dir nur rudimentär vorhanden.

Also lösche deine vorhanden Makros, kopiere die verlinkten Makros, passe diese an und probiere es noch einmal.

Gruß

M.O.
0 Punkte
Beantwortet von Einsteiger_in (47 Punkte)
Hallo,
tut mir Leid aber das Makro funktioniert nicht

Public Sub SendAllFiles()
Dim Files As VBA.Collection
Dim File As Scripting.File
  Dim Files As VBA.Collection
  Dim File As Scripting.File  
[b]Hier sind die Fehler mit den Scriping File kann ich nichts anfangen
Könnten Sie das Makro so machen dass es funktioniert ich komm
einfach nicht weiter.[/b]
  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
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

auf der Seite, die ich dir verlinkt habe steht u.a.
[quote]Über Extras/Referenzen müssen Sie einen Verweis auf die 'Microsoft Scripting Runtime' hinzufügen.[/quote]

Gehe also in das VBA-Projekt, wähle dort Extras - Verweise aus und setze einen Haken bei "Microsoft Scripting Runtime" (du musst etwas scrollen).

Dann probiere dein Makro noch einmal aus.

Gruß

M.O.
0 Punkte
Beantwortet von Einsteiger_in (47 Punkte)
Hallo, habe ich gemacht
jetzt hängt das Makro an
Set Folder = Fso.GetFolder(m_Send)
MfG Riedl
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

wenn du im Fehlermodus den Cursor auf m_Send legst, was wird dann angezeigt?

Gruß

M.O.
0 Punkte
Beantwortet von Einsteiger_in (47 Punkte)
Hallo
m_send = Leer
mfg riedl
...