Registriert seit: 03.10.2018
Version(en): 2016
Hallo Zusammen, Ich benötige eure Hilfe beim folgenden problem: Mit folgenden Code, erzeuge ich eine neue Exceltabelle aus bestehende Exceltabelle. Code: Dim iCounter, xCounter As Long Set wkb1 = ThisWorkbook Set wkb2 = Workbooks.Add(1) Set wks2 = wkb2.Sheets(1) wkb1.Activate With ThisWorkbook.Sheets(1).Cells(13, 54) If .Value = Date Then .Offset(, 1) = .Offset(, 1) + 1 Else .Value = Date .Offset(, 1) = 1 End If End With For iCounter = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(iCounter) And xOpt = 1 Or xOpt = 2 Then Set XBlatt = Sheets(ListBox1.List(iCounter, 0)) XZeile = Range(ListBox1.List(iCounter, 1)).Row XBlatt.Cells(XZeile, 54).Value = Date xCounter = xCounter + 1 XBlatt.Range("D" & XZeile & ",F" & XZeile & ",H" & XZeile & ",K" & XZeile & ",N" & XZeile & ",R" & XZeile & ",S" & XZeile & ",T" & XZeile & ",AR" & XZeile & ",AS" & XZeile & ",AT" & XZeile & ",AU" & XZeile & ",AV" & XZeile & ",AY" & XZeile & "").Copy wks2.Cells(xCounter, 1) 'andere Spalte nehmen! XBlatt.Cells(XZeile, 55).Value = ThisWorkbook.Sheets(1).Cells(13, 55).Value End If Next iCounter End Sub
Ich möchte aber erreiche, das mit den Betätigung des Buttons nicht eine neue Excel erzeugt wird, sonder eine neue outlook (email) wird gesendet, Die Excel Datei soll als Anhang in der Email sein. ich habe folgende Code für email erzeugen gefunden: Code: ub Schaltfläche1_Klicken() On Error GoTo ErrHandler ' SET Outlook APPLICATION OBJECT. Dim objOutlook As Object Set objOutlook = CreateObject("Outlook.Application") ' CREATE EMAIL OBJECT. Dim objEmail As Object Set objEmail = objOutlook.CreateItem(olMailItem)
With objEmail .to = "bsp@email.com" .Subject = "Email direkt aus Excel mit Anhang" .Body = "Hallo ich bin die eMail aus excel" ' .Display ' .Attachments.Add ("C:\neue erzeugte excel.xls") .Send End With ' CLEAR. Set objEmail = Nothing: Set objOutlook = Nothing ErrHandler:
End Sub
Kann man diese Codes irgendwie Kombinieren? Danke
Registriert seit: 03.10.2018
Version(en): 2016
kann wirklich keiner helfen?
Registriert seit: 11.04.2014
Version(en): Office 2007
01.11.2019, 18:18
(Dieser Beitrag wurde zuletzt bearbeitet: 01.11.2019, 18:19 von Steffl.)
Hallo, dein Code ist etwas unvollständig ich konnte es daher auch nicht testen aber gemäß dieser Seite https://www.online-excel.de/excel/singsel_vba.php?f=86könnte es so gehen Code: Sub prcPirat() Dim objOutlook As Object Dim objEmail As Object Dim wkbVersand As Workbook Dim strName As String Dim iCounter, xCounter As Long Set wkb1 = ThisWorkbook Set wkb2 = Workbooks.Add(1) Set wks2 = wkb2.Sheets(1) wkb1.Activate With ThisWorkbook.Sheets(1).Cells(13, 54) If .Value = Date Then .Offset(, 1) = .Offset(, 1) + 1 Else .Value = Date .Offset(, 1) = 1 End If End With For iCounter = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(iCounter) And xOpt = 1 Or xOpt = 2 Then Set XBlatt = Sheets(ListBox1.List(iCounter, 0)) XZeile = Range(ListBox1.List(iCounter, 1)).Row XBlatt.Cells(XZeile, 54).Value = Date xCounter = xCounter + 1 XBlatt.Range("D" & XZeile & ",F" & XZeile & ",H" & XZeile & ",K" & XZeile & ",N" & XZeile & ",R" & XZeile & ",S" & XZeile & ",T" & XZeile & ",AR" & XZeile & ",AS" & XZeile & ",AT" & XZeile & ",AU" & XZeile & ",AV" & XZeile & ",AY" & XZeile & "").Copy wks2.Cells(xCounter, 1) 'andere Spalte nehmen! XBlatt.Cells(XZeile, 55).Value = ThisWorkbook.Sheets(1).Cells(13, 55).Value End If Next iCounter Set wkbVersand = XBlatt.SaveAs(ThisWorkbook.Path & "\" & XBlatt.Name) strName = wkbVersand.FullName On Error GoTo ErrHandler ' SET Outlook APPLICATION OBJECT. Set objOutlook = CreateObject("Outlook.Application") ' CREATE EMAIL OBJECT. Set objEmail = objOutlook.CreateItem(olMailItem)
With objEmail .to = "bsp@email.com" .Subject = "Email direkt aus Excel mit Anhang" .Body = "Hallo ich bin die eMail aus excel" ' .Display ' .Attachments.Add ("C:\neue erzeugte excel.xls") .Attachments.Add strName .Send End With Kill strName ' CLEAR. Set objEmail = Nothing: Set objOutlook = Nothing ErrHandler: End Sub
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• Pirat2015
Registriert seit: 03.10.2018
Version(en): 2016
Hallo Steffl, ich bekomme folgende fehler: "Variable nicht definiert" Code: ' CREATE EMAIL OBJECT. Set objEmail = objOutlook.CreateItem(olMailItem)
olMailItem = wird Markiert
Registriert seit: 17.04.2019
Version(en): M$ 365 AfE v2009 / Office2013
Hi, die Konstante olMailItem ist durch das LateBinding unbekannt. Zwei Möglichkeiten: a) ersetze olMailitem durch eine 0 b) schreibe nach der Zeile Option Explicit bzw. oben im Modul Code: Const olMailItem as long = 0
Hinweis:Onlinhilfe zur olItem-Type-Aufzählung
Registriert seit: 03.10.2018
Version(en): 2016
04.11.2019, 23:51
(Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2019, 23:51 von Pirat2015.)
jetzt ist der Fehler weg aber es passiert nicht wenn ich den button betätige PS: habe die email Adresse abgeändert und wenn ich "Sub prcPirat()" durch "Private Sub CommandButton4_Click()" ersetze dann wird die Funktion bis Code: XBlatt.Cells(XZeile, 55).Value = ThisWorkbook.Sheets(1).Cells(13, 55).Value End If Next iCounter
ausgeführt und ab hier Code: et wkbVersand = XBlatt.SaveAs(ThisWorkbook.Path & "\" & XBlatt.Name) strName = wkbVersand.FullName On Error GoTo ErrHandler
wird ein Fehler angezeigt "Objekt erfordelich" was ist hier falsch?
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
poste den vollständigen Code.
Gruß Stefan Win 10 / Office 2016
Registriert seit: 03.10.2018
Version(en): 2016
ich habe doch am Anfang den gesamten code geschrieben
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo, Code: Sub prcPirat() Dim objOutlook As Object Dim objEmail As Object Dim wkbVersand As Workbook Dim strName As String Dim iCounter, xCounter As Long Set wkb1 = ThisWorkbook Set wkb2 = Workbooks.Add(1) Set wks2 = wkb2.Sheets(1) wkb1.Activate With ThisWorkbook.Sheets(1).Cells(13, 54) If .Value = Date Then .Offset(, 1) = .Offset(, 1) + 1 Else .Value = Date .Offset(, 1) = 1 End If End With For iCounter = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(iCounter) And xOpt = 1 Or xOpt = 2 Then Set XBlatt = Sheets(ListBox1.List(iCounter, 0)) XZeile = Range(ListBox1.List(iCounter, 1)).Row XBlatt.Cells(XZeile, 54).Value = Date xCounter = xCounter + 1 XBlatt.Range("D" & XZeile & ",F" & XZeile & ",H" & XZeile & ",K" & XZeile & ",N" & XZeile & ",R" & XZeile & ",S" & XZeile & ",T" & XZeile & ",AR" & XZeile & ",AS" & XZeile & ",AT" & XZeile & ",AU" & XZeile & ",AV" & XZeile & ",AY" & XZeile & "").Copy wks2.Cells(xCounter, 1) 'andere Spalte nehmen! XBlatt.Cells(XZeile, 55).Value = ThisWorkbook.Sheets(1).Cells(13, 55).Value End If Next iCounter XBlatt.SaveAs (ThisWorkbook.Path & "\" & XBlatt.Name) Set wkbVersand = ActiveWorkbook strName = wkbVersand.FullName wkbVersand.Close On Error GoTo ErrHandler ' SET Outlook APPLICATION OBJECT. Set objOutlook = CreateObject("Outlook.Application") ' CREATE EMAIL OBJECT. Set objEmail = objOutlook.CreateItem(olMailItem)
With objEmail .to = "bsp@email.com" .Subject = "Email direkt aus Excel mit Anhang" .Body = "Hallo ich bin die eMail aus excel" ' .Display ' .Attachments.Add ("C:\neue erzeugte excel.xls") .Attachments.Add strName .Send End With Kill strName ' CLEAR. Set objEmail = Nothing: Set objOutlook = Nothing ErrHandler: End Sub
Gruß Stefan Win 10 / Office 2016
Registriert seit: 03.10.2018
Version(en): 2016
Hallo Steffl wenn ich den Code ausführe passiert folgendes: Es wird eine neue Excel Tabelle erzeugt, ich denke das is dieser Code (denn ich ja schon vorher hatte) Code: Dim iCounter, xCounter As Long Set wkb1 = ThisWorkbook Set wkb2 = Workbooks.Add(1) Set wks2 = wkb2.Sheets(1) wkb1.Activate With ThisWorkbook.Sheets(1).Cells(13, 54) If .Value = Date Then .Offset(, 1) = .Offset(, 1) + 1 Else .Value = Date .Offset(, 1) = 1 End If End With For iCounter = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(iCounter) And xOpt = 1 Or xOpt = 2 Then Set XBlatt = Sheets(ListBox1.List(iCounter, 0)) XZeile = Range(ListBox1.List(iCounter, 1)).Row XBlatt.Cells(XZeile, 54).Value = Date xCounter = xCounter + 1 XBlatt.Range("D" & XZeile & ",F" & XZeile & ",H" & XZeile & ",K" & XZeile & ",N" & XZeile & ",R" & XZeile & ",S" & XZeile & ",T" & XZeile & ",AR" & XZeile & ",AS" & XZeile & ",AT" & XZeile & ",AU" & XZeile & ",AV" & XZeile & ",AY" & XZeile & "").Copy wks2.Cells(xCounter, 1) 'andere Spalte nehmen! XBlatt.Cells(XZeile, 55).Value = ThisWorkbook.Sheets(1).Cells(13, 55).Value End If Next iCounter End Sub
Jetzt mit deinen Code, wird auch die Datei in welche in Makro ausführe kopiert und geschlossen, die kopierte excel wird geöffnet und dann kommt Laufzeit Fehler 424 - Objekt erforderlich dieser Code wir gelb eangezeigt Code: Set wkbVersand = XBlatt.SaveAs(ThisWorkbook.Path & "\" & XBlatt.Name)
Ich möchte aber erreichen, das die neu Erzeugte excel welche ich mit diesen Code erstelle: Code: Dim iCounter, xCounter As Long Set wkb1 = ThisWorkbook Set wkb2 = Workbooks.Add(1) Set wks2 = wkb2.Sheets(1) wkb1.Activate With ThisWorkbook.Sheets(1).Cells(13, 54) If .Value = Date Then .Offset(, 1) = .Offset(, 1) + 1 Else .Value = Date .Offset(, 1) = 1 End If End With For iCounter = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(iCounter) And xOpt = 1 Or xOpt = 2 Then Set XBlatt = Sheets(ListBox1.List(iCounter, 0)) XZeile = Range(ListBox1.List(iCounter, 1)).Row XBlatt.Cells(XZeile, 54).Value = Date xCounter = xCounter + 1 XBlatt.Range("D" & XZeile & ",F" & XZeile & ",H" & XZeile & ",K" & XZeile & ",N" & XZeile & ",R" & XZeile & ",S" & XZeile & ",T" & XZeile & ",AR" & XZeile & ",AS" & XZeile & ",AT" & XZeile & ",AU" & XZeile & ",AV" & XZeile & ",AY" & XZeile & "").Copy wks2.Cells(xCounter, 1) 'andere Spalte nehmen! XBlatt.Cells(XZeile, 55).Value = ThisWorkbook.Sheets(1).Cells(13, 55).Value End If Next iCounter End Sub
Einfach auf C am besten auf den Display gespeichert wird, dann das outlook aufgeht und sich diese Datei als Anhang zieht und an die angegeben email versenden. Die Datei in welche diese Aktionen ausgeführt werden soll nicht angetatstetwerden geht das? Vielen Dank
|