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

ListBox Multiselected Auswahl uebergeben

ListBox Multiselected Auswahl uebergeben
abu
Hallo zusammen,
hab mal wieder ein Problem und hoffe Ihr koennt mir weiterhelfen.
Habe eine ListBox die einen Ordner ueberwacht und die vorhandenen Dateien anzeigt.
Nun moechte ich gerne die Dateien die ich brauche auswaehlen koennen und sie dann an eine Mail automatisch als Anhaenge hinzufuegen.
Wie spreche ich denn die ausgewaehlten Dateien in der ListBox an und wie mache ich das mit dem .Attachments.Add in der Mail?
Danke im Voraus.
Gruss
abu

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: ListBox Multiselected Auswahl uebergeben
07.12.2010 14:35:17
Tino
Hallo,
das kannst Du in etwa so machen.
Ich sammle die Daten in einem Array und übergebe die Dateien in der Mail durch eine Schleife.
Man könnte anstatt dem Array auch gleich die Listbox durchlaufen.
Private Sub CommandButton1_Click()
Dim strArrayFiles() As String
Dim i As Integer, ii As Integer


With ListBox1
    If .ListIndex > -1 Then
        Redim Preserve strArrayFiles(.ListCount - 1)
        
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                strArrayFiles(ii) = .List(i)
                ii = ii + 1
            End If
        Next i
        
        Redim Preserve strArrayFiles(ii - 1)
        Send_Mail strArrayFiles
    End If
End With

End Sub

Private Sub Send_Mail(ArrayAnlage() As String)
Dim MyOutApp As Object, MyMessage As Object
Dim varFiles

Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)

    
With MyMessage
    .To = "Hier kommt die Adresse rein"
    .Subject = "hier der Betreff"
    .body = "Mein Text"
    For Each varFiles In ArrayAnlage
        .Attachments.Add varFiles
    Next varFiles
    .Display
    '.Send  'Hier wird die Mail gesendet 
End With

Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub
Gruß Tino
Anzeige
Klasse! Kopie in Ordner verschieben?
07.12.2010 15:55:00
abu
Hallo Tino,
einfach nur gut!!! Noch 'varFiles' mit nem String fuer den Pfad verbunden weil bei mir nur die Dateien ohne Pfad eingelesen werden und noch eine Abfrage rein ob ArrayAnlage nicht leer ist, falls mal nichts ausgewaehlt ist und schon klappts so wie ich das moechte. Vielen Dank!!!
Kannst Du mir vllt. auch sagen wie ich eine Kopie von dieser email auf der Festplatte speicher also nicht in Outlook irgendwohin verschieben.
Beste Gruesse
abu
AW: Klasse! Kopie in Ordner verschieben?
07.12.2010 16:26:02
Tino
Hallo,
durch 'If .ListIndex &gt -1 Then' wird der Code nur durchlaufen
wenn etwas ausgewählt wurde.
Eine Kopie der Mail kannst Du so erstellen.
Private Sub Send_Mail(ArrayAnlage() As String)
Dim MyOutApp As Object, MyMessage As Object
Dim varFiles
Dim SaveAsPath$

SaveAsPath = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")

Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)

    
With MyMessage
    .To = "Hier kommt die Adresse rein"
    .Subject = "hier der Betreff"
    .body = "Mein Text"
    For Each varFiles In ArrayAnlage
        .Attachments.Add varFiles
    Next varFiles
    .Display
    .SaveAs SaveAsPath & .Subject & "_" & Format(Date, "dd_mm_yyyy") & ".msg"
    '.Send  'Hier wird die Mail gesendet 
End With

Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub
Hier wird die Mail im Ordner der Exceldatei gespeichert,
Name wird aus dem Betreff und dem Datum zusammengetzt.
Gruß Tino
Anzeige
Meldungen von Outlook abstellen?
07.12.2010 16:37:43
Outlook
Hey Tino,
ich hab deinen Code umgestellt da vorher noch einige Berechnungen und zuweisungen stattfinden muessen, deshalb hab ich Send_Mail strArrayFiles aus der Schleife genommen. Da ich in jedem Fall eine Mail generiert haben moechte hab ich dann die Pruefung ArrayAnlage gemacht.
Speichern klappt auch wunderbar. Aber sowohl bei der Speicherung als auch beim direkten verschicken kommen Abfragen von Outlook. Application.DisplayAlerts funzt nicht, geh mal davon aus das es nur fuer Excel gilt.
Kann ich die auch irgendwie abstellen?
Gruss
abu
Kopie von gesendeter Mail
07.12.2010 16:53:00
gesendeter
Hallo Tino,
ich muss mich korrigieren, ich brauch eine kopie von der gesendeten Mail.
Also wenns geht direkt senden ohne Abfragen von Outlook und dann eine Kopie aus den gesendeten Mails holen und speichern.
Ist viel verlangt aber kannst Du mir dabei auch helfen?
Gruss
abu
Anzeige
AW: Kopie von gesendeter Mail
07.12.2010 18:21:53
gesendeter
Hallo,
könnte man so machen, allerdings muss man dem Code so viel Zeit einräumen bis sichergestellt ist
das die Mail versendet ist, hier habe ich mal 30 Sekunden eingestellt.
Wenn man die Sicherheitswarnung abstellen will, verwende ich dies.
http://www.mapilab.com/de/outlook/security/
Du kannst auch mal mit Google suchen, da gibt es noch Versionen mit SendKey.
Private Sub CommandButton1_Click()
Dim strArrayFiles() As String
Dim i As Integer, ii As Integer


With ListBox1
    If .ListIndex > -1 Then
        Redim Preserve strArrayFiles(.ListCount - 1)

        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                strArrayFiles(ii) = .List(i)
                ii = ii + 1
            End If
        Next i

        Redim Preserve strArrayFiles(ii - 1)
        Send_Mail strArrayFiles
    End If
End With

End Sub

Private Sub Send_Mail(ArrayAnlage() As String)
Dim MyOutApp As Object, MyMessage As Object
Dim varFiles


Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)

    
With MyMessage
    .To = "tino@tinomargit.com"
    .Subject = "hier der Betreff"
    .body = "Mein Text"
    For Each varFiles In ArrayAnlage
        .Attachments.Add varFiles
    Next varFiles
    'Zeit evtl. anpassen, bis Mail gesendet ist hier 30 Sekunden ****************************************** 
    Application.OnTime Now + TimeSerial(0, 0, 30), "'Suche_Mail """ & CDbl(Now) & """,""" & .Subject & """'"
    .Send  'Hier wird die Mail gesendet 
End With


Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub
In ein Modul kommt dieser Code.
Sub Suche_Mail(vonDatum As Date, strBetreff$)
Dim objOutlook As Object, objNameSpace As Object
Dim objMapiFolder As Object, objItems As Object
Dim bisDatum As Date
Dim SaveAsPath$

SaveAsPath = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")

Set objOutlook = CreateObject("Outlook.Application")
Set objNameSpace = objOutlook.GetNamespace("MAPI")
Set objMapiFolder = objNameSpace.GetDefaultFolder(5)
Set objItems = objMapiFolder.Items
  
objItems.Sort "[ReceivedTime]"
objItems.IncludeRecurrences = True

Set objItems = objItems.Restrict("[ReceivedTime] >= '" & Format(vonDatum, "dd.mm.yyyy hh:mm") & "'")

'Schleife durch alle gefundenen Mails 
For Each objItems In objItems
 With objItems
  If .Subject = strBetreff Then
      .SaveAs SaveAsPath & .Subject & "_" & Format(Date, "dd_mm_yyyy") & ".msg"
      Exit For
  End If
 End With
Next objItems
 

Set objNameSpace = Nothing
Set objNameSpace = Nothing
Set objMapiFolder = Nothing
Set objItems = Nothing
End Sub
Gruß Tino
Anzeige
Leider nicht erlaubt!
08.12.2010 09:08:56
abu
Hallo Tino,
vielen Dank fuer Deine Muehen aber ich werd mich wohl dagegen entscheiden. Wir duerfen hier nichts installieren und die 2 Abfragen fuers senden und kopieren sind nerviger als selber die Mail zu verschicken und eine kopie abzulegen. Vor dem Hintergrund das mir nicht bekannt ist wer alles damit arbeitet und ich nicht jedem das erklaeren kann, muss der User halt auch noch ein bissel selber machen...
Beste Gruesse
abu

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige