Digital-Inn
 
 

Go Back   Digital-Inn > Office-Welt > MS Outlook

MS Outlook Outlook . viel mehr als "nur" ein Mail-Programm.

Reply
 
Thread Tools Display Modes
Old 29-08-2006   #16
leon79
Registered User
Board-Frischling
 

Join Date: Aug 2006
Location: Bochum
Posts: 7
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Hallo zusammen,
ich hätte eine Frage zu dieser zeile im oben stehen den Prog.
Private Const ATT_PATH As String = "D:\outlook\Attachement",
ich möchte dass die Anlagen in einem einheitlichen Netzwerkpfad gespeichert werden also... einen Ort im Netzwerk nennen wo sie automatisch gespeichert werden............. und nicht jedes mal einen Ordner anlegen, und die Zeile immer ändern "D:\outlook\Attachement", ich hoffe die Frage ist verständlich.
Danke
Gruß.
leon79 is offline   Reply With Quote
Sponsored Links
Old 29-08-2006   #17
leon79
Registered User
Board-Frischling
 

Join Date: Aug 2006
Location: Bochum
Posts: 7
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Hallo zusammen,
ich hätte eine Frage zu dieser zeile im oben stehenden Prog.
Private Const ATT_PATH As String = "D:\outlook\Attachement",
ich möchte, dass die Anlagen in einem einheitlichen Netzwerkpfad gespeichert werden also... einen Ort im Netzwerk nennen wo sie automatisch gespeichert werden............. und nicht jedes mal einen Ordner auf jedem Rechner nennen, und diese Zeile immer ändern "D:\outlook\Attachement"...?
Ich hoffe die Frage ist verständlich.
Danke
Gruß.
leon79 is offline   Reply With Quote
Old 30-08-2006   #18
Pitter
CO-*****
Senior Member (Board-Inventar)
 
Pitter's Avatar
 

Join Date: Aug 2001
Location: In Deutschland
Posts: 2.658
Abgegebene Danke: 1
Erhielt 2 Danke für 2 Beiträge
sorry, aber das verstehe ich nicht so ganz...

Du kannst doch den Netzwerkpfad angeben, wo Du den Ordner \\serverleon\shares\Userfiles\PDF (zum Bleistift )anlegst.

Alle User speichern dann auf dem Netzwerk-Share. Allerdings verlangsamt dieser Prozess Deinen Ausdruck, da Du die Daten hin- und herschaufelst, bevor Du die in den Spooler bekommst... es sei denn, dass Du sowieso über den Server-Spooler auf einem Netzwerk-Drucker die Dinger druckst...

Andererseits ging es im letzten Teil dieses Threads darum lediglich eine temoräre Datei zu erstellen, die dann für den Ausdruck benutzt wird. Theoretisch könnte man es noch so vervollkommnen, dass die temp. Datei auch wieder automatisch gelöscht wird.

Bei mir wird dies über eine Batch beim Systemstart automatisch wieder gelöscht.


@echo off
del C:\TMP\*.pdf /Q /F

Die Attribute hierfür sind:
/F Erzwingt das Löschen schreibgeschützter Dateien.
/S Löscht alle Dateien in allen Unterverzeichnissen.
/Q Keine Rückfrage bei Benutzung globaler Platzhalter.
__________________
Gruss
Pitter
______________________________________________________________________________

Ich bin nicht die Signatur.... ich putz hier nur...
Link in eigener Sache: Glasperlenkunst






**** Kein Support per Mail/PN, nur über das Forum! ****

Last edited by Pitter on 30-08-2006 at 00:25
Pitter is offline   Reply With Quote
Old 06-09-2006   #19
leon79
Registered User
Board-Frischling
 

Join Date: Aug 2006
Location: Bochum
Posts: 7
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Hallo zusammen
ohne eure Hilfe komme ich nicht weiter
Bei eigehenden Emails möchte ich eine Meldung mit dem Betreff und Name des Absenders, das Problem ist: wenn ich 5 emails von verschiedenen Absendern bekomme, dann erscheint bei den nächsten MsgBoxs immer noch der Absender und Betreff der ersten email.... wie kann ich dieses beseitigen so dass ich der Name des Absenders und Betreff der betreffenden email erscheint!?

Option Explicit

Private Const SHOWMAXIMIZED = 3&

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
....
Private Sub Application_NewMail()
...
Dim Repense
Set objPosteingang = ...
For Each objNewMail In objPosteingang.Items
With objNewMail
If .UnRead = True Then
For i = 1 To .Attachments.Count
If LCase(Right(.Attachments(i).FileName, 4)) = ".pdf" Then
!!!!Beim Eingang einer neuen Mail erscheint eine MSGBOX mit Absender & Betreff der Mail.
Repense = msgBox("Sie haben eine neue E-Mail erhalten." & Chr(13) & Chr(13) & _
"Absender:" & Chr(9) & posteingan.Items(i).SenderName & Chr(13) & _
"Betreff:" & Chr(9) & Chr(9) & posteingang.Items(i).Subject & Chr(13) & _
"Eingangsordner:" & Chr(9) & posteingang.Name & Chr(13) & Chr(13) & _
"Möchten Sie diese E-Mail jetzt lesen?", 4 + 256 + 64 + 4096, "NEUE EMAIL")
If Repense = vbYes Then

Product = "C:\xx\xx" & .Attachments.Item(i).FileName
.Attachments.Item(i).SaveAsFile Product
ShellExecute 0, "print", Product, "", "", SHOWMAXIMIZED
End If
End If
Next i
End If
End With
Next objNewMail
End Sub

Und das mit i anstatt 1 "bst" hat leider nicht funktionniert..
Gruß
leon79 is offline   Reply With Quote
Old 06-09-2006   #20
bst
Excel Moderator
Senior Member (Board-Inventar)
 

Join Date: Oct 2004
Location: Ilsfeld
Posts: 2.468
Abgegebene Danke: 10
Erhielt 147 Danke für 145 Beiträge
Hallo leon79,

Hoppsala.

Du rufst Die MsgBox ja in der Schleife der Attachements auf. Da gehört sie nicht hin. Versuch's mal so.

Und beachte die Punkte vor den Eigenschaften:

.SenderName bedeutet daß sich SenderName auf den zuvorigen WITH bezieht, hier also auf objNewMail.

Übrigens, hab's wiederum nicht getestet.

Und, gehe sowas mal im Einzelschrittmodus (F8) im VBA durch und schaue Dir nach jedem Schritt die entsprechenden Variablen an.

cu, Bernd
--
Code:
Option Explicit

Private Const SHOWMAXIMIZED = 3&

'Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( .... )

Private Sub Application_NewMail()
   '...
   Dim Repense
   
   Set objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
   For Each objNewMail In objPosteingang.Items
      With objNewMail
         If .UnRead = True Then
            '!!!!Beim Eingang einer neuen Mail erscheint eine MSGBOX mit Absender & Betreff der Mail.
            Repense = MsgBox("Sie haben eine neue E-Mail erhalten." & Chr(13) & Chr(13) & _
               "Absender:" & Chr(9) & .SenderName & Chr(13) & _
               "Betreff:" & Chr(9) & Chr(9) & .Subject & Chr(13) & _
               "Eingangsordner:" & Chr(9) & .Name & Chr(13) & Chr(13) & _
               "Möchten Sie diese E-Mail jetzt lesen?", 4 + 256 + 64 + 4096, "NEUE EMAIL")
            If Repense = vbYes Then
               ' ...
            End If
            For i = 1 To .Attachments.Count
               If LCase(Right(.Attachments(i).Filename, 4)) = ".pdf" Then
                  Product = "C:\xx\xx" & .Attachments.Item(i).Filename
                  .Attachments.Item(i).SaveAsFile Product
                  ShellExecute 0, "print", Product, "", "", SHOWMAXIMIZED
               End If
            Next i
         End If
      End With
   Next objNewMail
End Sub

Last edited by bst on 27-01-2009 at 12:53 Reason: HTML-Tags entfernt
bst is offline   Reply With Quote
Old 07-09-2006   #21
Pitter
CO-*****
Senior Member (Board-Inventar)
 
Pitter's Avatar
 

Join Date: Aug 2001
Location: In Deutschland
Posts: 2.658
Abgegebene Danke: 1
Erhielt 2 Danke für 2 Beiträge
Hallo bst,

ich habe eben Rückmeldung von einer unserer Filialen bekommen...Bei dem PC, auf dem als Einziges noch Office 2k installiert ist, funktionert weder das Speichern, noch das Drucken... Gut ich habe es selbst nicht installiert, aber ich habe telefonischen Support gegeben, was wohin muss und was geändet werden muss...

Eine idee, woran das liegen könnte?
__________________
Gruss
Pitter
______________________________________________________________________________

Ich bin nicht die Signatur.... ich putz hier nur...
Link in eigener Sache: Glasperlenkunst






**** Kein Support per Mail/PN, nur über das Forum! ****
Pitter is offline   Reply With Quote
Old 07-09-2006   #22
bst
Excel Moderator
Senior Member (Board-Inventar)
 

Join Date: Oct 2004
Location: Ilsfeld
Posts: 2.468
Abgegebene Danke: 10
Erhielt 147 Danke für 145 Beiträge
Hallo Pitter,

nein, ich habe momentan kein OL 2000 zum Testen zur Verfügung.

Gibt es denn dort Application_NewMail überhaupt ?

Im Zweifelssfall mache einfach ein paar Debug.Prints rein und laß Dir dann das Ergebnis aus dem VBA-Direktfenster durchgeben / zumailen.

Du könntest mir aber auch den Code senden. Ich würde das dann @Home ausprobieren, da habe ich Office 2000 drauf.

Habe voraussichtlich aber erst am Wochenende Zeit dazu.

cu, Bernd
bst is offline   Reply With Quote
Old 07-09-2006   #23
Pitter
CO-*****
Senior Member (Board-Inventar)
 
Pitter's Avatar
 

Join Date: Aug 2001
Location: In Deutschland
Posts: 2.658
Abgegebene Danke: 1
Erhielt 2 Danke für 2 Beiträge
Hat Zeit... Da ich gerade Urlaub habe, ist das Ganze nicht so wichtig.
Ich komme eh erst in 2 Wochen an den Rechner dran, um das mal zu probieren.

Mit den Debuggern hatte ich mir schoin gedacht und auch schon mal gestern Abend reingeschoben, aber da sitzen nur ein paar Leute, die keine Ahnung von der Materie haben... nutzt also nix, da jetzt die App. rüber zu pushen... Bis ich da Ergebnisse habe, die ich gebrauchen kann.....
__________________
Gruss
Pitter
______________________________________________________________________________

Ich bin nicht die Signatur.... ich putz hier nur...
Link in eigener Sache: Glasperlenkunst






**** Kein Support per Mail/PN, nur über das Forum! ****
Pitter is offline   Reply With Quote
Old 07-09-2006   #24
leon79
Registered User
Board-Frischling
 

Join Date: Aug 2006
Location: Bochum
Posts: 7
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Hallo bst,
es hat auch leider nicht funktionniert..!!

Gruss. leon79
leon79 is offline   Reply With Quote
Old 08-09-2006   #25
bst
Excel Moderator
Senior Member (Board-Inventar)
 

Join Date: Oct 2004
Location: Ilsfeld
Posts: 2.468
Abgegebene Danke: 10
Erhielt 147 Danke für 145 Beiträge
Hallo Leon,

was ganau hat nicht funktioniert ?

Und, schicke mal bitte den gesamten von Dir benutzen Code mit, ich schau's mir dann mal in Ruhe an.

cu, Bernd
bst is offline   Reply With Quote
Old 09-09-2006   #26
leon79
Registered User
Board-Frischling
 

Join Date: Aug 2006
Location: Bochum
Posts: 7
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Hallo

Hallo bst,
ich habe den code so geändert, wie es mir in der letzten Nachricht beschrieben hast, es hat nicht geklappt...
und die Idee ist so:
angenommen habe ich 8 Emails mit Anlagen (.pdf-Datei)gekriegt, dann erscheinen 8 Meldungen hintereinander, alle mit dem Namen des Absenders und Betreff der ersten Email, obwohl die anderen 7 Emails von verschiedenen absendern, und natürlich mit einem ganz anderen Betreff... aber trotzdem erscheint bei allen MsgBoxen der selbe Absender und Betreff (nämlich der ersten Email)
Denn bevor ich die Anlage einer Email speichere und dann ausdrucke, muss ich erstmal wissen von wem die Email ist, und was beinhaltet die Anlage.
Ich schicke dir den gesamten von mit benutzten code als Anlage (.doc)..
ich denke die MsgBox wird nur einmal innerhalb der For-Schleife aufgerufen, ich weiß nicht woran es liegt..
danke
Gruß.leon79
Attached Files
File Type: doc aaaaaaaaaaaaa.doc (21,5 KB, 4 views)
leon79 is offline   Reply With Quote
Old 10-09-2006   #27
bst
Excel Moderator
Senior Member (Board-Inventar)
 

Join Date: Oct 2004
Location: Ilsfeld
Posts: 2.468
Abgegebene Danke: 10
Erhielt 147 Danke für 145 Beiträge
Hallo Leon79,

- gehe da mal im Einzelschrittmodus mit F8 durch und schaue Dir selber genau an was passiert

1. "objNewMail.Name" gibt es nicht, das hatte ich übersehen, nimm hier
besser mal objPosteingang.Name.

2. Wenn Repense = vbYes ist, greift Du vor der Schleife ! auf .Attachments.Item(i).FileName zu. Das kann nicht gehen, da i da noch 0 ist.

3. Du 'liest' die Mail ja nirgendwo, sondern druckst ggf. ihre Anhänge aus.
Und dabei wird das Gelesen auch nicht gesetzt. D.h., bei der nächsten neuen Mail kommen die 'alten' Teile natürlich wieder.

Versuche das vielleicht mal so.

cu, Bernd
--
Code:
Option Explicit

Private Const SHOWMAXIMIZED = 3&

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
      ByVal hWnd As Long, _
      ByVal lpOperation As String, _
      ByVal lpFile As String, _
      ByVal lpParameters As String, _
      ByVal lpDirectory As String, _
      ByVal nShowCmd As Long _
   ) As Long

Private Sub Application_NewMail()
   Dim objPosteingang As MAPIFolder
   Dim objNewMail As MailItem
   Dim i As Integer
   Dim Product As String
   Dim Repense
   
   Set objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
   For Each objNewMail In objPosteingang.Items
      With objNewMail
         If .UnRead = True Then
            'Beim Eingang einer neuen Mail erscheint eine MSGBOX mit Absender & Betreff der Mail.
            Repense = MsgBox("Sie haben eine neue E-Mail erhalten." & Chr(13) & Chr(13) & _
               "Absender:" & Chr(9) & .SenderName & Chr(13) & _
               "Betreff:" & Chr(9) & Chr(9) & .Subject & Chr(13) & _
               "Eingangsordner:" & Chr(9) & objPosteingang.Name & Chr(13) & Chr(13) & _
               "Möchten Sie diese E-Mail jetzt drucken?", 4 + 256 + 64 + 4096, "NEUE EMAIL")
            If Repense = vbYes Then
               For i = 1 To .Attachments.Count
                  If LCase(Right(.Attachments(i).Filename, 4)) = ".pdf" Then
                     Product = "D:\TEST\" & .Attachments.Item(i).Filename
                     .Attachments.Item(i).SaveAsFile Product
                     ShellExecute 0, "print", Product, "", "", SHOWMAXIMIZED
                  End If
               Next i
               .UnRead = False
            End If
         End If
      End With
   Next objNewMail
End Sub

Last edited by bst on 27-01-2009 at 12:57 Reason: HTML Tags entfernt
bst is offline   Reply With Quote
Old 27-01-2009   #28
nke
Registered User
 

Join Date: Jan 2009
Location: Delmenhorst
Posts: 4
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Hallo zusammen,

ich habe den folgenden Code von bst bzw. Pitter übernommen funktioniert auch wunderbar. Danke dafür!

Nun wäre es super wenn man diesen Code noch um eine Abfrage ergänzen könnte welche nur Mails von einem bestimmtem Empfänger bzw. mit bestimmtem Betreff druckt & speichert.

Zudem wäre es super wenn die Dateien pro Tag in einem speraten Ordner (Ordnername = Datum) anstatt alle direkt in P:\Attachments\ abzulegen.
Also z.B. P:\Attachments\27012009\dateiname.pdf

Kann mir da jemand helfen?

PHP Code:
Option Explicit

' Makro zum automatischen Drucken von Dokumenten aus Mail-Anlagen


Aufruf der Prozedur
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
    
"ShellExecuteA" (ByVal hwnd As LongByVal lpOperation As String_
    ByVal lpFile 
As StringByVal lpParameters As String_
    ByVal lpDirectory 
As StringByVal nShowCmd As Long) As Long _
   

Private WithEvents Items As Outlook.Items

' Verzeichnis, in dem die Anlagen gespeichert werden sollen

Private Const ATT_PATH As String = "P:\Attachments\"



Private Sub Application_Startup()

    ' 
Verweis auf den zu überwachenden Mail-Ordner.
    
    
Set Items Application.GetNamespace("MAPI"_
        
.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub Items_ItemAdd(ByVal Item As Object)
    
Dim mItem As Outlook.MailItem
    
    
If TypeOf Item Is Outlook.MailItem Then
        Set mItem 
Item
        
If mItem.Attachments.Count 0 Then PrintAttachments mItem
    End 
If
End Sub

Private Sub PrintAttachments(oMail As Outlook.MailItem)
    
Dim oAtt As Outlook.Attachment
    Dim sFile 
As String
    
    On Error Resume Next
    
    
For Each oAtt In oMail.Attachments
        
' Nur ausgewählte Dateitypen speichern
        Select Case LCase$(Right$(oAtt.FileName, 4))
            Case ".pdf"
            
            ' 
Hier kommt eine auskommentierte Message-Boxmit Speicherabfrage Ja-Nein
            
                
' If MsgBox("Datei speichern ?", vbYesNo, "Speichern") = vbYes Then
                
                    sFile = ATT_PATH & oAtt.FileName
                    oAtt.SaveAsFile sFile
                    ShellExecute 0, "print", sFile, vbNullString, vbNullString, 0
                                                    
            ' 
End If
        
End Select
    Next
End Sub 

Last edited by nke on 27-01-2009 at 12:31
nke is offline   Reply With Quote
Old 27-01-2009   #29
bst
Excel Moderator
Senior Member (Board-Inventar)
 

Join Date: Oct 2004
Location: Ilsfeld
Posts: 2.468
Abgegebene Danke: 10
Erhielt 147 Danke für 145 Beiträge
Hi nke,

Quote:
Nun wäre es super wenn man diesen Code noch um eine Abfrage ergänzen könnte welche nur Mails von einem bestimmtem Empfänger bzw. mit bestimmtem Betreff druckt & speichert.
Hmm, wie stellst Du dir die Eingabe dazu vor?

Quote:
Zudem wäre es super wenn die Dateien pro Tag in einem speraten Ordner (Ordnername = Datum) anstatt alle direkt in P:\Attachments\ abzulegen.
Also z.B. P:\Attachments\27012009\dateiname.pdf
Nimm für ATT_PATH anstatt einer Konstanten eine Variable und weise der einen entsprechenden Wert zu.

Code:
   Dim ATT_PATH As String
   ATT_PATH = "P:\Attachments\" & Format(Date, "YYYYMMDD") & "\"
cu, Bernd
bst is offline   Reply With Quote
Folgender Benutzer sagt Danke zu bst für den nützlichen Beitrag:
nke (27-01-2009)
Old 27-01-2009   #30
nke
Registered User
 

Join Date: Jan 2009
Location: Delmenhorst
Posts: 4
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Hallo Bernd,

danke für die schnelle Antwort!

Eingabe dafür nunja z.B. alle Mails von nke@test.de mit dem Betreff "Lieferschein" sollen gedruckt und gespeichert werden. Alle anderen Mails nicht.

Zum ATT_PATH, wo genau muss deine Zeile denn hin?
Die Const muss ja weg, nur wo soll ich die Dim einfügen?
An der gleichen Stelle geht nicht bekomm ich nen Fehler.

Danke + Gruß, Nils
nke is offline   Reply With Quote
Sponsored Links
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 19:03.


Powered by vBulletin® Version 3.7.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
SEO by vBSEO 2.4.0
Template-Modifikationen durch TMS
Advertisement System V2.5 By   Branden
Copyright by NightwoLF & Jesse69