Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro soll Daten selektieren und als Email versenden
#1
Hallo,

ich habe ein kleines Problem (siehe angehängte Excel 2013 Beispieldatei).
In der Datei sind im Bereich "Ausgangslage" (soll ein Sheet "Reporting" andeuten = Ursprungsdaten) gewisse Daten mittels Formeln zusammengefasst. Die Daten sind nach Spalte A = System sortiert. Ein Makro sollte nun Folgendes erreichen:
1) Sortiert nach den Einträgen in Spalte E = Auth Dev für jeden Namen, der dort enthalten ist, die relevanten Zeilen in ein temporär erstelltes Worksheet kopieren (siehe Beispieldatei alles AUSSER Bereich "Ausgangslage")
2) Den Bereich pro Auth Dev via Mail (outlook Integration vorhanden) an eine im Bereich "Ausgangslage" vorhandene Email versenden und wenn am Ende des temporär erstellten Worksheets angekommen, dieses temporäre Worksheet wieder löschen.
3) Kür wäre nun, wenn ich das noch irgendwie automatisieren könnte. Macht aber wahrscheinlich wenig Sinn, da hierzu die Datei geöffnet sein müßte, oder nicht ?

Geht das überhaupt oder habe ich zuviel Endorphine zwischen meinen Synapsen Smile

Ich bin für jede Hilfe dankbar auch für die, die mir sagt, dass es nicht geht.
Besten Dank vorab, auch ... dass Ihr es Euch überhaupt durchgelesen habt.
LG

Stefan

P.S.: Und sorry dafür, wenn ich schon wieder im falschen Bereich lande.


Angehängte Dateien
.xlsx   Beispieldatei.xlsx (Größe: 13,04 KB / Downloads: 10)
Antworten Top
#2
Hi all,

Hm, keine Idee oder "Junge, schlag es Dir aus dem Kopf ... das geht nicht oder ist zu aufwändig" ?
LG

Stefan
Antworten Top
#3
(16.09.2015, 06:33)steff97 schrieb: Hm, keine Idee oder "Junge, schlag es Dir aus dem Kopf ... das geht nicht oder ist zu aufwändig" ?

Erinnerung!
Antworten Top
#4
Hallo Steff,

erst mal als Ansatz zum email-Versand: Nutze die Suche, Stichworte sind Tabelle email. Dort findest Du unter anderem 3 Beiträge zum Thema, ich war da zuweilen auch involviert. Smile

Einen Makro - Ansatz für das "Filtern" und Kopieren der Daten bekommst Du, wenn Du die entsprechende Aktion aufzeichnest. Für den email-Versand ist eine Kopie der Daten auf ein temporäres Blatt vorzusehen. Dieses Blatt wird dann gesondert gespeichert und kann dann als Anhang versendet werden.

Alternativ könnte man den Body einer Nachricht auch direkt befüllen.

Schaue Dir das erst mal alles an und melde Dich noch mal, dann sehen wir morgen weiter. Idea
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Hallo schauan,

besten Dank für Deine Unterstützung und sorry für die späte Antwort.
Ich hab eine (hoffentlich) "bessere" Beispieldatei im Upload. Ich bin ein Makroanfänger und bekomme immer wieder den Fehler 1004 und blicke es nicht.
Zeile 13 (in Reporting) ist Kopfzeile, Spalte 5 ist die Filterspalte.
Hier ist der Code(Ich hab die vom Debugger anmonierte Zeile rot markiert):

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim Begriff As String, gefunden As Variant, firstAddress As Variant, _
Zeile As Long
Begriff = InputBox("Verantwortliche Person ? (Bitte Suchstring mit einem * beginnen und abschließen):", "Suchbegriff")
If Begriff = "" Then Exit Sub
With Sheets("Reporting").Cells
Set gefunden = .Find(Begriff, LookIn:=xlValues)
If Not gefunden Is Nothing Then
firstAddress = gefunden.Address
Worksheets("Dataexport").Rows("1:3000").Delete
Sheets("Reporting").Rows(13).Copy Destination:=Worksheets("Dataexport").Rows(1)
Worksheets("Reporting").Activate
ActiveSheet.Range("$A$13:$AY$3000").AutoFilter Field:=5, Criteria1:= _
        Begriff, Operator:=xlAnd
Do
Sheets("Reporting").Rows(1).Copy Destination:=Worksheets("Dataexport").Rows(2)
Zeile = gefunden.Row
Rows(Zeile).Copy
Sheets("Dataexport").Cells(Rows.Count, 1).End(x1Up).Offset(2, 0).PasteSpecial
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Set gefunden = .FindNext(gefunden)
Loop While Not gefunden Is Nothing And gefunden.Address <> firstAddress
End If
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


Folgendes soll gemacht werden:
- Nach der Messagebox wird im Sheet Reporting nach Werten gesucht, die den Suchbegriff erfüllen und nach diesem gefiltert => funktioniert, Filter wird gesetzt
- Diese Werte sollen in kompletten Zeilen iterativ kopiert werden in einer Schleife => Zeile wird kopiert und beim Einfügen bekomme ich den Fehler 1004 "Anwendungs- oder objektdefinierter Fehler" und das hat mal mit diesem Code funktioniert

Zukunftsmusik/Wünsche
- Wenn der Fehler mal bereinigt ist, dann möchte ich diese kopierten Daten an die jeweilige Emailadresse schicken, hinter die der jeweilige Bearbeiter steckt.
- Auch hätte ich gerne, dass zur Datenkopie ein temporäres Tabellenblatt erstellt wird, das immer gleich heisst. Dazu müsste verprobt werden, ob es schon da ist und wenn es schon da ist, sollte es gelöscht werden, bevor es neu erstellt und mit Daten befüllt wird.

Kannst Du/ Könnt Ihr helfen ?
Ich bin für jede Hilfe mehr als dankbar.
LG

Stefan
Antworten Top
#6
(28.09.2015, 08:45)steff97 schrieb: Kannst Du/ Könnt Ihr helfen ?
Ich bin für jede Hilfe mehr als dankbar.


Angehängte Dateien
.xlsx   Beispieldatei.xlsx (Größe: 13 KB / Downloads: 2)
Antworten Top
#7
Das ist die richtige Beispieldatei, sorry.


Angehängte Dateien
.xlsx   Beispieldatei.xlsx (Größe: 13,51 KB / Downloads: 4)
Antworten Top
#8
Hallo Stefan,

wenn ich alles richtig verstanden habe, dann würde ich in Deinem Fall den Spezialfilter nutzen.
Das sind ein Paar Zeilen Code (ohne Fehlerbehandlung) und die Ausführung ist sehr schnell.

In der eingestellten Datei kannst Du sehen, wie so etwas funktioniert.
Das neu anlegen von Tabellen und versenden per Mail kann dann darauf aufgebaut werden und sollte
keine Probleme darstellen.


.xlsm   Beispieldatei steff97.xlsm (Größe: 24 KB / Downloads: 7)
Gruß Atilla
Antworten Top
#9
Hallo Attila,

ganz lieben Dank für Deinen Code. Er läuft bei der Beispieldatei prima. Nur bei der Originaldatei produziert er Fehler (er läuft durch, löscht aber in Reporting Zellbereich A1:Z14 und trägt bei Dataexport nichts ein; beim ersten Durchlauf brachte er auch die Fehlermeldung, dass die Operation mit verbundenen Zellbereichen nicht durchgeführt werden konnte). Ich habe daher die Beispieldatei auf die Originaldatei angepasst (von der Breite her) und nochmal hier hinein geladen. Einziger Unterschied ist nun, dass nicht nur 10 Zeilen in der Originaldatei sind sondern über 300. Ich habe versucht den Bereich entsprechend in der Breite zu erweitern. Hier mein angepasster Code von Dir:

 Sub daten_Suche_und_kopie()
Dim Begriff As String
Dim ZeileReporing As Long
Dim ZeileDataex As Long
Begriff = InputBox("Bitte verantwortlichen Administrator eintragen ? (Bitte Suchstring mit einem * beginnen und abschließen):", "Suchbegriff")
If Begriff = "" Then Exit Sub
With Sheets("Reporting")
    ZeileReporing = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
With Sheets("Dataexport")
    ZeileDataex = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    Range("A3:AZ" & ZeileDataex).Clear
    .Range("E1") = Sheets("Reporting").Range("E13").Value
    .Range("E2") = Begriff
    Sheets("Reporting").Range("A13:AZ" & ZeileReporing).AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=.Range("E1:E2"), CopyToRange:=.Range("A4:AZ"), Unique:=False
    .Range("E1:E2").Clear
End With
End Sub

Fragen:
- Ich habe die gelben Werte erweitert, wo ist mein Fehler ?

Nochmal besten Dank für Deine Hilfe. Vielleicht hast Du ja auch einen Code, wie man dann diese Datensätze in Dataexport an die hinterlegte Mailadresse schickt und das Dataexport wieder löscht.
LG

Stefan


Angehängte Dateien
.xlsx   Beispieldatei_neu.xlsx (Größe: 25,92 KB / Downloads: 3)
Antworten Top
#10
Hallo Stefan,

Hab nicht viel Zeit, nur vorab einHinweis, warum bei Dir in Reporting gelöschtwird:

In folgender Codezeile:

Range("A3:AZ" & ZeileDataex).Clear

Muss zu Beginn der Zeile ein Punkt geschrieben werden

So:

.Range("A3:AZ" & ZeileDataex).Clear

Zu Deinen weiteren Fragen kann ich vielleicht heute Abend etwas sagen.
Gruß Atilla
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste