Clever-Excel-Forum

Normale Version: Angaben aus Pivot per VBA in E-Mail
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe eine Tabelle die relativ viele Einträge beinhaltet. Mittels zweier Pivots werden die Werte ausgegeben die interessant sind (je nachdem welchen Filter man einstellt).

Teile dieser Pivots möchte ich in eine E-Mail einbringen (in den Text integrieren), welche mittels Makro erstellt werden soll und einen standardisierten Aufbau hat.

Hier gerate ich nun an zwei Probleme:

1. in der Pivot stehen Prozentzahlen die beim Einfügen in den E-Mailbody zu Dezimalzahlen werden (eigentlich auch logisch, ich blick nur nicht wie man das ändert)

2. die Pivot hat je nachdem was man im Filter einstellt, unterschiedlich viele Zeilen. ich möchte aber alle Zeilen in die E-Mail einfügen. Der betrachtete Bereich kann also mal 2 Zeilen und mal 15 Zeilen lang sein.

Mein Code sieht hier bisher folgendermaßen aus:



Code:
Sub Email()
Dim objOutlook As Object
Dim objMail As Object
Dim rng As Range
Dim KW As String
KW = Worksheets("Tabelle1").Cells(1, 5).Value
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
   .To = "[email="user1@beispiel.de"]user1@beispiel.de[/email]; [email="user2@beispiel.de"]user2@beispiel.de[/email]"
   .Subject = "Durchführung in KW " & KW
   .Body = "Hallo," & Chr(13) & _
           Chr(13) & _
           "in der letzten Kalenderwochen wurden folgende Ergebnisse erzielt:" & Chr(13) & _
           Chr(13) & _
           Range("J8").Value & ":" & " " & Range("K8").Value & "(" & Range("L8") & ")" & Chr(13) & _
           Chr(13) & _
           "in der nächsten Kalenderwoche werden folgende Bereiche behandelt:" & Chr(13) & _
           Chr(13) & _
           Range("O8").Value & Chr(13) & _
           Chr(13) & _
           "Viele Grüße"

   .Display
End With
End Sub

klingt eigentlich alles nicht so schwer, ich kriegs aber nicht hin.

hat hier jemand Lösungen für mich?

Danke und Gruß
Hallöchen,

Die Prozente könntest Du z.B. mit FORMAT(…) ausgeben lassen.

Die Zeilenzahl des letzten Eintrages könntest Du z.B. mit

lLastRow=Cells(Rows.Count,1).End(xlup).Row

feststellen. Hier wäre es anhand des letzten Eintrages in Spalte A, und dann wenn es zeilenweise gehen soll in einer Schleife abarbeiten, z.B.

For iCnt = 8 to lLastRow

Range("J" & iCnt).Value

Next
Hallo,

danke schonmal für die Lösungswege.

Das mit LastRow… war schonmal ein guter Hinweis. Daraus konnte ich was basteln. Danke.

Das mit Format verstehe ich noch nicht so ganz. Wo und wie baue ich das am besten ein? Ich hab ja die Pivot die mir Prozentwerte angibt. Wenn ich das per Makro in den Body einfüge, dann wird das ja zu Dezimalzahlen.  Also wo am besten Format einsetzen?

Danke und Gruß
Hallöchen,

du verarbeitest damit jeweils die Zelle der Zeile, wo die Prozentzahl steht, z.B.

Format(Range("A1"), "0.00 %")
(06.05.2020, 12:25)Blacko schrieb: [ -> ]1. in der Pivot stehen Prozentzahlen die beim Einfügen in den E-Mailbody zu Dezimalzahlen werden (eigentlich auch logisch, ich blick nur nicht wie man das ändert)

Hallo, :19:

ohne Format einfach so: :21:

Code:
Range("J8").Text & ":" & " " & Range("K8").Text & "(" & Range("L8").Text & ")" & Chr(13) & _

Eventuell noch für dich interessant:

Referencing Pivot Table Ranges in VBA...

Dort siehst du wie man eine Pivot in VBA ansprechen kann.
super, vielen Dank euch.