Microsoft Excel

Herbers Excel/VBA-Archiv

schon wieder ein Fehler! Bitte Hilfe!!!!

Betrifft: schon wieder ein Fehler! Bitte Hilfe!!!! von: Alexa
Geschrieben am: 03.09.2014 09:51:00

Hallo zusammen,

ich möchte, dass sobald im Excel im Eingabeformular1 der Übernehmenbutton gedrückt wird, soll eine Mail geschickt werden, dass ein neuer Kunde angelegt wurde.

Aber ich verstehe den Code nicht ganz, und kann auch deshalb den Fehler nicht finden...

Bitte helft mir..

Sub lotus()
 
 ' Die Variablen für Empfänger und Anhang sind richtig zu belegen

 Dim sText As String, sEmpfang As String, sBetrifft As String
 Dim session As Object, db As Object, doc As Object, rtobject As Object
 Dim rtitem As Object, sKopie As String
 Dim AttachMe As Object, DerAnhang As Object
 Dim user As String, server As String
 Dim mailfile As String, sBlindKopie As String
 Dim vAn As Variant, vCopy As Variant
 Dim vBlind As Variant, sAnhang As String
 On Error GoTo Fehler
 sText = "Test " & vbCrLf & "Zweite Zeile" ' Testtext
 sText = Replace(sText, vbCrLf, Chr(10)) ' Zeilenumbrüche ändern
 sEmpfang = "alexa@googlemail.de
 sBetrifft = "neues Rohr" ' die Betreffzeile
 ' sKopie = "Email1 ; Email2 " ' Einträge durch " ; " getrennt
 ' sBlindKopie = "Email1 ; Email2 " ' Einträge durch " ; " getrennt
 ' vAn = Split(sEmpfang, " ; ") ' Empfänger Array
 sAnhang = Sheets("Messauftrag") ' Muss natürlich richtig gesetzt werden
 If Len(sKopie) > 0 Then vCopy = Split(sKopie, " ; ") 'cc Array
 If Len(sBlindKopie) > 0 Then vBlind = Split(sBlindKopie, " ; ")  'bcc Array
 Set session = CreateObject("notes.notessession") ' Notes muss gestartet sein
 user = session.UserName
 server = session.GetEnvironmentString("MailServer", True)
 mailfile = session.GetEnvironmentString("MailFile", True)
 Set db = session.getdatabase(server, mailfile)
 Set doc = db.createdocument()
 doc.Form = "Memo"
 doc.SendTo = vAn  ' an array
 If Len(sKopie) > 0 Then doc.copyto = vCopy 'cc Array
 If Len(sBlindKopie) > 0 Then doc.blindcopyto = vBlind 'bcc Array
 doc.Subject = sBetrifft ' die Betreffzeile
 Set rtitem = doc.CREATERICHTEXTITEM("body")
 Call rtitem.APPENDTEXT(sText)
 doc.SAVEMESSAGEONSEND = True
 doc.PostedDate = Now
 ' *******************************************
 If sAnhang <> "" Then
  Set AttachMe = doc.CREATERICHTEXTITEM("Attachment")
  Set DerAnhang = AttachMe.EMBEDOBJECT(1454, "", sAnhang, "Attachment")
 End If
 '*******************************
 Call doc.Send(False)
Aufraeumen:
 On Error Resume Next
 Set rtitem = Nothing
 Set AttachMe = Nothing
 Set DerAnhang = Nothing
 Set db = Nothing
 Set doc = Nothing
 Set session = Nothing
 Exit Sub
Fehler:
 Resume Aufraeumen
End Sub
Danke und Gruß

Alexa

  

Betrifft: AW: schon wieder ein Fehler! Bitte Hilfe!!!! von: Rudi Maintaire
Geschrieben am: 03.09.2014 10:12:15

Hallo,
da ist auf jeden Fall schon mal einer:

 sAnhang = Sheets("Messauftrag") ' Muss natürlich richtig gesetzt werden

Du kannst einer Stringvariablen kein Blatt zuweisen.

Gruß
Rudi


  

Betrifft: AW: schon wieder ein Fehler! Bitte Hilfe!!!! von: Alexa
Geschrieben am: 03.09.2014 11:16:23

Danke, und wie kann ich des dann machen? Der Messauftrag ist mein 2.Reiter


  

Betrifft: AW: schon wieder ein Fehler! Bitte Hilfe!!!! von: Rudi Maintaire
Geschrieben am: 03.09.2014 11:52:10

Hallo,
was hast du denn vor?
willst du das Blatt als Anhang versenden?

Dann musst du es erst in eine neue Mappe kopieren und speichern.

Motto:

  sAnhang = "c:\temp\messauftrag_" & Format(Date, "yyyymmdd") & ".xlsx"
  Sheets("Messauftrag").Copy
  With ActiveWorkbook
    .SaveAs sAnhang
    .Close
  End With

Gruß
Rudi


  

Betrifft: AW: schon wieder ein Fehler! Bitte Hilfe!!!! von: Alexa
Geschrieben am: 03.09.2014 12:32:31

Hey,

ich möchte erst mal, dass dieses Blatt automatisch in irgendeinem Ordner gespeichert wird, und dann soll in der Mail nicht das ganze Dokument angehängt sein, sondern nur eine Benachrichtigung, dass etwas neues eingegeben wurde.

Danke;-)


  

Betrifft: AW: schon wieder ein Fehler! Bitte Hilfe!!!! von: Rudi Maintaire
Geschrieben am: 03.09.2014 13:14:23

Hallo,
erst mal, dass dieses Blatt automatisch in irgendeinem Ordner gespeichert wird
siehe mein Code

und dann soll in der Mail nicht das ganze Dokument angehängt sein
dann lass das

     If sAnhang <> "" Then
      Set AttachMe = doc.CREATERICHTEXTITEM("Attachment")
      Set DerAnhang = AttachMe.EMBEDOBJECT(1454, "", sAnhang, "Attachment")
     End If

weg.

sondern nur eine Benachrichtigung, dass etwas neues eingegeben wurde
passe sBetrifft und sText entsprechend an.

Gruß
Rudi


  

Betrifft: AW: schon wieder ein Fehler! Bitte Hilfe!!!! von: Alexa
Geschrieben am: 03.09.2014 13:21:45

Ich habe jetzt folgenden Code (im UserForm hinterlegt):

Sub lotus()
 
 Dim sText As String, sEmpfang As String, sBetrifft As String
 Dim session As Object, db As Object, doc As Object, rtobject As Object
 Dim rtitem As Object, sKopie As String
 Dim AttachMe As Object, DerAnhang As Object
 Dim user As String, server As String
 Dim mailfile As String, sBlindKopie As String
 Dim vAn As Variant, vCopy As Variant
 Dim vBlind As Variant, sAnhang As String
 On Error GoTo Fehler
 sText = "Test " & vbCrLf & "Zweite Zeile" ' Testtext
 sText = "Info:Es wurde ein neues Rohr angelegt" ' Zeilenumbrüche ändern
 sEmpfang = "alexa.paukstat@wieland.de ; achim.gotterbarm@wieland.de " ' Einträge durch " ; "  _
getrennt
 sBetrifft = "Info:neues Rohr" ' die Betreffzeile
 ' sKopie = "Email1 ; Email2 " ' Einträge durch " ; " getrennt
 ' sBlindKopie = "Email1 ; Email2 " ' Einträge durch " ; " getrennt
 ' vAn = Split(sEmpfang, " ; ") ' Empfänger Array
 sAnhang = Sheets("Messauftrag") ' Muss natürlich richtig gesetzt werden
 If Len(sKopie) > 0 Then vCopy = Split(sKopie, " ; ") 'cc Array
 If Len(sBlindKopie) > 0 Then vBlind = Split(sBlindKopie, " ; ")  'bcc Array
 Set session = CreateObject("notes.notessession") ' Notes muss gestartet sein
 user = session.UserName
 server = session.GetEnvironmentString("MailServer", True)
 mailfile = session.GetEnvironmentString("MailFile", True)
 Set db = session.getdatabase(server, mailfile)
 Set doc = db.createdocument()
 doc.Form = "Memo"
 doc.SendTo = vAn  ' an array
 If Len(sKopie) > 0 Then doc.copyto = vCopy 'cc Array
 If Len(sBlindKopie) > 0 Then doc.blindcopyto = vBlind 'bcc Array
 doc.Subject = sBetrifft ' die Betreffzeile
 Set rtitem = doc.CREATERICHTEXTITEM("body")
 Call rtitem.APPENDTEXT(sText)
 doc.SAVEMESSAGEONSEND = True
 doc.PostedDate = Now

 Call doc.Send(False)
Aufraeumen:
 On Error Resume Next
 Set rtitem = Nothing
 Set AttachMe = Nothing
 Set DerAnhang = Nothing
 Set db = Nothing
 Set doc = Nothing
 Set session = Nothing
 Exit Sub
Fehler:
 Resume Aufraeumen
End Sub

Aber ich verstehe immer noch nicht, warum es nicht geht?

Danke;-)

Liebe Grüße
Alexa


  

Betrifft: du hast ja noch immer ... von: Rudi Maintaire
Geschrieben am: 03.09.2014 13:32:42

sAnhang = Sheets("Messauftrag") 

drin stehen.

Gruß
Rudi


  

Betrifft: AW: du hast ja noch immer ... von: Alexa
Geschrieben am: 03.09.2014 13:34:54

Das habe ich jetzt raus, aber es geht immer noch nicht...
Oder was soll ich da hinschreiben??

Sorry, aber ich kenn mich mit VBA ned aus :-(

Danke für deine Hilfe


  

Betrifft: AW: du hast ja noch immer ... von: Alexa
Geschrieben am: 03.09.2014 13:36:40

Woher weiß der Code denn, dass die Mail gesendet werden soll, wenn "Übernehmen" im UserForm gedrückt wird? Fehlt des vll irgendwo?


  

Betrifft: AW: du hast ja noch immer ... von: Rudi Maintaire
Geschrieben am: 03.09.2014 13:42:21

Hallo,
1. ist die Zeile vAn = Split(....) auskommentiert. Du brauchst aber einen Empfänger.
2. du musst den Code im Click-Ereignis des Buttons aufrufen.

Gruß
Rudi


  

Betrifft: AW: du hast ja noch immer ... von: Alexa
Geschrieben am: 03.09.2014 14:20:23

Private Sub lotus()
 
 Dim sText As String, sEmpfang As String, sBetrifft As String
 Dim session As Object, db As Object, doc As Object, rtobject As Object
 Dim rtitem As Object, sKopie As String
 Dim AttachMe As Object, DerAnhang As Object
 Dim user As String, server As String
 Dim mailfile As String, sBlindKopie As String
 Dim vAn As Variant, vCopy As Variant
 Dim vBlind As Variant, sAnhang As String
 On Error GoTo Fehler
 
 sText = "Test " & vbCrLf & "Zweite Zeile" ' Testtext
 sText = "Info:Es wurde ein neuer Kunde angelegt" ' Zeilenumbrüche ändern
 sEmpfang = "alexa@googlemail.com" ' Einträge durch " ; " getrennt
 sBetrifft = "Info:neuer Kunde" ' die Betreffzeile
 If Len(sKopie) > 0 Then vCopy = Split(sKopie, " ; ") 'cc Array
 If Len(sBlindKopie) > 0 Then vBlind = Split(sBlindKopie, " ; ")  'bcc Array
 Set session = CreateObject("notes.notessession") ' Notes muss gestartet sein
 user = session.UserName
 server = session.GetEnvironmentString("MailServer", True)
 mailfile = session.GetEnvironmentString("MailFile", True)
 Set db = session.getdatabase(server, mailfile)
 Set doc = db.createdocument()
 doc.Form = "Memo"
 doc.SendTo = vAn  ' an array
 If Len(sKopie) > 0 Then doc.copyto = vCopy 'cc Array
 If Len(sBlindKopie) > 0 Then doc.blindcopyto = vBlind 'bcc Array
 doc.Subject = sBetrifft ' die Betreffzeile
 Set rtitem = doc.CREATERICHTEXTITEM("body")
 Call rtitem.APPENDTEXT(sText)
 doc.SAVEMESSAGEONSEND = True
 doc.PostedDate = Now

 Call doc.Send(False)
Aufraeumen:
 On Error Resume Next
 Set rtitem = Nothing
 Set AttachMe = Nothing
 Set DerAnhang = Nothing
 Set db = Nothing
 Set doc = Nothing
 Set session = Nothing
 Exit Sub
Fehler:
 Resume Aufraeumen
End Sub
Das ist jetzt mein Code, er meldet mir keinen Fehler, aber trotzdem bekomme ich noch keine Mailbenachrichtigung... was stimmt denn da nicht?

Danke


  

Betrifft: AW: du hast ja noch immer ... von: Alexa
Geschrieben am: 03.09.2014 14:40:20

Ich habe es als neues Thema eröffnet


 

Beiträge aus den Excel-Beispielen zum Thema "schon wieder ein Fehler! Bitte Hilfe!!!!"