Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1336to1340
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabelle aufteilen & per LN versenden

Tabelle aufteilen & per LN versenden
13.11.2013 12:00:29
Wolfgang
Hallo zusammen,
ich habe bereits viele nützliche Code-Beispiele hier gefunden und verwendet, und es scheint ja nichts unmöglich zu sein - außer für mich mit meinen sehr begrenzten Kenntnissen :-)
Ich habe (aus diesem Forum) einen Code "TabelleAufteilen", mit dem eine umfangreiche Tabelle in mehrere Einzeltabellen aufgeteilt und gleichzeitig unter einem entsprechenden Tabellennamen gespeichert werden. Klappt super, bis hierhin alles ok.
Ich habe einen weiteren Code "MailVersenden", mit dem ich eine Tabelle (die aktuelle, in der der Code hinterlegt ist), über LotusNotes versenden kann. Klappt ja auch gut.
Nun möchte ich aber diese beiden Codes verknüpfen, sprich:
Zuerst sollen die Tabellen aufgeteilt werden, dann soll sofort jede der neu erstellten Tabellen an einen mail-Empfänger versendet werden.
Der mail-Empfänger soll aus einer weiteren Tabelle (oder einem Tabellenblatt) gefunden werden (Querverweis (?)) anhand einer ID, die in der Haupttabelle (der aufzuteilenden) in einer Spalte steht.
Also z.B.:
Zeile A2 bis A20000: Hiernach werden die neuen Tabellen gefiltert und erstellt (siehe auch unten im Code "TabelleAufteilen")
Zeile B2 bis B20000: irgendwelche Daten
Zeile C2 bis C20000: verschiedene ID´s der jeweiligen Empfänger
Der Code "TabelleAufteilen":
Sub TabelleAufteilen()
Dim wkbN As Workbook
Dim shQuelle As Worksheet, shN As Worksheet
Dim rngBereich As Range, rngZelle As Range
Dim strPfad As String, strDatei As String
Dim enmAntwort As VbMsgBoxResult
Dim lngZ As Long
On Error GoTo F
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set shQuelle = ActiveSheet   'ggf. anpassen
With shQuelle
If .FilterMode Then .ShowAllData '.Cells(1).AutoFilter
lngZ = .Cells(Rows.Count, 1).End(xlUp).Row
If lngZ = 1 Then Exit Sub
Set rngBereich = .Range("A1:A" & lngZ)
rngBereich.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Set rngBereich = rngBereich.Resize(rngBereich.Rows.Count - 1).Offset(1).SpecialCells( _
xlCellTypeVisible)
If rngBereich.Cells.Count >= 25 Then
enmAntwort = MsgBox("Es werden " & rngBereich.Cells.Count & " gefilterte Excel- _
Tabellen erstellt." & vbLf _
& "Es kann etwas dauern, bis die gefilterten Excel-Tabellen  _
gespeichert sein werden!", vbOK + vbInformation, "Hinweis")
If enmAntwort = vbCancel Then GoTo F
End If
strPfad = Dateidialog
If strPfad = "" Then Exit Sub
Set shN = Workbooks.Add.Sheets(1)
For Each rngZelle In rngBereich
.UsedRange.AutoFilter Field:=1, Criteria1:=rngZelle
.AutoFilter.Range.Copy shN.Cells(1, 1)
strDatei = strPfad & rngZelle & " " & Tabelle2.Range("A1") & ".xlsx"
If Dir(strDatei)  "" And enmAntwort  vbYes Then
enmAntwort = MsgBox("Die Datei mit dem Namen" & vbLf & "'" & strDatei & "'" &  _
vbLf _
& "ist an diesem Speicherort bereits vorhanden." & vbLf _
& "Soll sie und alle weiteren ersetzt werden?", vbYesNo +  _
vbCritical)
If enmAntwort = vbNo Then
Exit For
ElseIf enmAntwort = vbYes Then
Application.DisplayAlerts = False
End If
End If
shN.SaveAs strPfad & rngZelle & " " & Tabelle2.Range("A1") & ".xlsx"
shN.UsedRange.Clear
Next
shN.Parent.Close False
.Cells(1).AutoFilter
MsgBox "FERTIG. Es wurden " & rngBereich.Cells.Count & " gefilterte Excel-Tabellen  _
unter RD EVA gespeichert." & vbLf _
& "Falls Sie eine weitere Tabelle filtern möchten, müssen Sie dieses Programm  _
zunächst schließen (ohne speichern!) und erneut starten.", vbOKOnly + vbInformation, "Hinweis"
End With
F:  If Err  0 Then MsgBox Err.Description, , "Fehler-Nr.: " & Err.Number
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Function Dateidialog() As String
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
fd.InitialFileName = "c:\rdeva\"
fd.Title = "Speichern der gefilterten Einzellisten im Ordner RD EVA, Button SPEICHERN  _
klicken"
fd.ButtonName = "SPEICHERN"
If fd.Show = -1 Then Dateidialog = fd.SelectedItems(1) & IIf(Right(fd.SelectedItems(1), 1) = _
"\", "", "\")
End Function

Dann der zweite Code "MailSenden":
Sub mail()
Dim Empfaenger As String
Dim rtitem As Object
Dim EmbeddedObject As Object
Dim Tosenden As String
Dim CCsenden As String
Dim Betreff As String
Dim Text As String
Dim Linkanhang As String
Linkanhang = ThisWorkbook.FullName
Tosenden = Worksheets("tabellenname").Range("b1") 'anpassen
CCsenden = Worksheets("tabellenname").Range("a2") 'anpassen
Betreff = Worksheets("tabellenname").Range("a3") 'anpassen
Text = Worksheets("tabellenname").Range("a4") 'anpassen
On Error GoTo Err_Mail_Click
Dim SessionNotes As Object, NotesDB As Object, NotesDoc As Object
Set SessionNotes = CreateObject("Notes.NOTESSESSION")
Set NotesDB = SessionNotes.GetDatabase("", "")
NotesDB.OPENMAIL
If NotesDB.IsOpen = False Then
MsgBox "Bitte melden Sie sich zunächst vollständig in Notes an!", vbInformation + vbOKOnly
Exit Sub
End If
Set NotesDoc = NotesDB.CreateDocument
With NotesDoc
.Form = "Memo"
.Subject = Betreff
.sendto = Tosenden
.copyto = CCsenden
.body = Text
.DeliveryReport = "B"
.Importance = "2"
.SAVEMESSAGEONSEND = True
.ReturnReceipt = "1"
.Sign = "1"
''''''''''''''''''''''''''''' Dateianhang''''''''''''''''''''''''''''''''''''''''''''''''''''''' _
_
If Trim$(Linkanhang)  "" Then
Const embed_ATT = 1454
Set rtitem = .CreateRichTextItem("linkanhang")
Set EmbeddedObject = rtitem.EmbedObject(embed_ATT, "", Linkanhang, "linkanhang")
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' _
_
.Send False
End With
Set SessionNotes = Nothing
Set NotesDB = Nothing
Set NotesDoc = Nothing
Set rtitem = Nothing
Set EmbeddedObject = Nothing
Exit_Mail_Click:
Exit Sub
Err_Mail_Click:
MsgBox Err.Description
Resume Exit_Mail_Click
End Sub

Vielen Dank!
Gruß
Wolfgang

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle aufteilen & per LN versenden
14.11.2013 08:47:10
Wolfgang
Hallo zusammen,
gibt es hier keine Lösung oder war meine Frage zu "banal" oder nicht richtig erläutert?
Gruß
Wolfgang

AW: Tabelle aufteilen & per LN versenden
14.11.2013 15:25:21
ChrisL
Hi Wolfgang
Ich lasse die Frage offen.
Ich denke die Frage ist einfach zu umfangreich. Solche Code-Bandwürmer mag keiner lesen, nicht jeder hat Lotus Notes und es fehlt eine Beispieldatei.
Zwei Prozeduren verknüpfen kannst du z.B. so
Sub Kombi()
Call TabelleAufteilen
Call Empfaenger
End Sub
Wegen dem ID-Problem, könntest mittels SVERWEIS die Email auf das erste Blatt holen, ggf. mit ausgeblendeter Hilfsspalte.
Aber eben, würde vorschlagen du machst ein vereinfachtes Beispiel mit Datei. Nicht zu viele Probleme auf einmal, einfach Frage, einfache Antwort ;)
cu
Chris

Anzeige
AW: Tabelle aufteilen & per LN versenden
14.11.2013 17:54:31
Wolfgang
Hallo Chris,
danke für Deine Antwort!
Das mit dem "Bandwurm" sehe ich ein, ich habe mich nur an den bereits existierenden
Beiträgen orientiert, worin immer wieder "Zeig mal den Code" gefordert wird, und da dachte
ich mir, ich stelle ihn mal gleich mit ein.
Einfache Frage kann ich glaube ich nicht, aber danke für die einfachen Antworten!
Das zweite zuerst:
Da mittels des makro "TabelleAufteilen" verschiedenste Tabellen mit mal mehr mal weniger
Spalten und Zeilen aufgeteilt werden, müsste ich die Hilfsspalte wohl ziemlich "weit rechts"
einfügen. Das sollte ich noch schaffen ;-) , aber dann:
Ich befasse mich normalerweise nur mit Access, seltenst mit Excel (außer Tabellen zum Import
in Access), daher ist mir das mit dem SVERWEIS leider nicht ganz klar:
Ich habe immer eMail-Adressen von ca. 150 Empfängern, die dann die aufgeteilten Tabellen
erhalten sollen.
Wie "sage" ich es dem makro, dass es während des Erstellens der einzelnen Tabellen immer
die (mittels ID gefundene) mail-Adresse in die Hilfsspalte der neu erstellten Tabelle
schreibt?
Und dann der zweite Schritt:
Die beiden Codes müssten eigentlich nicht verknüpft werden, es würde mir genügen, wenn ich
den Code "Mailsenden" in die jeweils neuen Tabellen "mitnehmen" könnte.
Denn im Code steht ja als Anhang "ThisWorkbook", und so wie ich das verstehe, wird dabei
die aktuelle Tabelle in LN als Anhang eingefügt.
Das mit dem Beispiel als Datei bringt im Moment nichts, würde ich sagen, denn außer dass
ich die beiden Makros aus dem ersten Beitrag in einer Tabelle habe und beide Makros
nacheinander - oder dank Deines Hinweises auch verknüpft - aufrufen kann, ist ja nichts
weiter zu sehen. Die Lösung suche ich ja....
Danke nochmals
Gruß
Wolfgang

Anzeige
AW: Tabelle aufteilen & per LN versenden
15.11.2013 10:31:46
ChrisL
Hi Wolfgang
Im übertragenen Sinn entspricht SVERWEIS einer DB-Verknüpfung mit Primärschlüssel. Es handelt sich um eine Tabellenfunktion, welche sich aber auch in VBA verwenden lässt.
http://www.online-excel.de/excel/singsel.php?f=9
Sub t()
MsgBox WorksheetFunction.VLookup("ID", Worksheets("Source").Range("A:B"), 2, 0)
End Sub
Der Rest übersteigt meine Vorstellungskraft. Mit ThisWorkbook ist die Mappe gemeint und in der Folge sprichst du von Tabellen. Aber vor allem fehlt mir die Zeit für umfangreiche Projekte. Frage darum offen.
cu
Chris

Anzeige
AW: Tabelle aufteilen & per LN versenden
15.11.2013 13:40:18
Wolfgang
Hallo Chris,
ok, danke auf jeden Fall für Deine Antworten und Hilfe bis hierher.
Ich sehe schon, dass ich mein Problem nicht "sauber" genug darstelle, darum werde ich
jetzt nicht noch weitere Erklärungsversuche dranhängen.
Ich probiere mal selber, die Sache mit dem SVERWEIS hinzubekommen, dann eine Beispieldatei
zu erstellen und werde dann wohl wieder fragen....
Gruß
Wolfgang

AW: Tabelle aufteilen & per LN versenden
15.11.2013 14:08:28
ChrisL
Hallo Wolfgang
Danke für die Rückmeldung.
Ich denken dein Vorschlag ist gut und mit einem "sauberen" Beitrag wird Dir sicher professionell geholfen. Weiterhin viel Erfolg mit deinem Projekt.
Gruss
Chris
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige