neue ArbeitsMappe pro vorselektierten Eintrag

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm InputBox MsgBox
Bild

Betrifft: neue ArbeitsMappe pro vorselektierten Eintrag
von: da.ricci
Geschrieben am: 08.06.2015 17:10:38

Hallo an Alle,
meine Ist-Situation:
eine "Mastertabelle" mit ≥ paar Tausend Zeilen
- meist als ListObject/Tabelle formatiert aber auch des öfteren als Bereich mit
 "AutoFilter"
- fast immer über "Header-Zeile" noch weitere relevante Überschriftszeilen
- Spalte für Auswahl-Kriterium an unterschiedlicher Position
- selten aber doch, Ergebnis-Zeile mit div.Formeln und Formaten - nicht immer als
 [#Totals] zu erkennen.
ZurZeit wird für jeden "relevanten" Eintrag aus einer "AutoFilter-Spalte", der
Bereich "händisch" markiert und mit Hilfe eines Makros:
- die Auswahl in eine neue Mappe kopiert
- und nach Schema: "AuswahlSpaltenEintrag (alterDateiName).FileFormat" im
 "QuellOrdner" gespeichert.

Diese "nurmehr" 3 Arbeitsschritte pro relevanten Eintrag, können aber bei Relevanz
 > 250 - 500 doch sehr viel Zeit in Anspruch nehmen.
Aus diesem Grund habe ich eine Userform über die ich alle Bereiche
(ÜberschriftEN, TableBody,...) und auch die "vorselektierte" Kriterium-Spalte
erfrage - die Tabelle (ListObjekt od. Bereich) "zerlege" und in einer neuen Mappe
wieder "zusammenbaue", gebastelt.
Funktioniert soweit - Leider reichen meine VBA-Kenntnisse nicht aus um:
- pro vorselektierter Relevanz eine seperate Mappe nach Schema:
 [ÜberschriftEN]-[TableBody (pro)]-[Ergebnis-Zeile/wenn vorhanden] - zu erzeugen.

Hierfür wird Eure Hilfe erbeten.
statt den QuellCode zu posten (recht umfangreich), ich wüsste auch nicht welchen Teil, ;-)
kann ich gerne die ArbeitsMappe hochladen.

Viele Dank im Voraus

*greets* aus Wien
da.ricci
dieses Forum hatt mir - als suchender und stiller Leser - schon sehr viel geholfen. [ExtraDankAnAlle]

Bild

Betrifft: AW: neue ArbeitsMappe pro vorselektierten Eintrag
von: Armin
Geschrieben am: 09.06.2015 09:24:40
Hallo da.ricci,
das funktioniert nur über einer Vorlage. Also du legtst ein Sheet an mit dem Header den Du brauchst.
Dann ezeugst Du eine Sheet aus der Vorlage und kopierst die Daten der Auswahl dahinein. Dann verschiebst bzw. speicherst dieses Sheet als Mappe. Dabei wird das kopierte Sheet wieder gelöscht. Dazu musst Du jedoch erst noch bekannt geben wie sich der Name der Mappe die gespeichert werden soll zusammensetzt! Dann schicke ich Dir den Code dazu.

Bild

Betrifft: AW: neue ArbeitsMappe pro vorselektierten Eintrag
von: da.ricci
Geschrieben am: 09.06.2015 11:12:46
Hallo Armin,
Danke, für die Rückmeldung.
mittels Vorlage? Hmm - da steh ich "daneben".
Ich definiere im Moment den "Üeberschrifts-Bereich" über:

If Range(rngUeberschriftEN.Address).Cells.Count = 0 Then
 Set rngUeberschriftEN = Application.InputBox("Bitte wählen Sie die Überschrift(en) aus", " _
Bereichauswahl", "A1:H1", Type:=8)
Else
....
....

den "Body-Bereich" über:
If Range(rngBody.Address).Cells.Count = 0 Then
 Set rngBody = Application.InputBox("Bitte wählen Sie den Datenbereich aus", "Bereichauswahl", " _
A2:H2", Type:=8)
Else
....
.... 

und setze die neue Tabelle mittels:
Set rngToCopy = Union(rngUeberschriftEN, rngBody) 

in einer neuen Mappe zusammen.
hol mir dann die Erbebniszeile (wenn vorhanden):
If Not rngErgebnis Is Nothing Then
 sheetZiel.ListObjects("Tabelle").ShowTotals = True 
 sheetQuelle.Range(listOBJ.Name & "[#Totals]").Copy
Else
...
...

und füge diese mit Formeln und Formaten in die neue Mappe ein - Mappe speichern über Variable - Fertig.
Soweit funktioniert's ja schon.
was noch fehlt, (abgesehen von CodeOptimierung), ist das Teilen des "BodyBereiches" lt. "vorselektierte" Kriterium-Spalte.
Ich denke da an etwas wie:
For Each "Eintrag" in "comboRefSpalte"
 Set einen "TeilBody"
Next
Ich hänge mal, zum besseren Verständnis, die MasterMappe an:
https://www.herber.de/bbs/user/98099.xlsm
Grüsse da.ricci

Bild

Betrifft: AW: neue ArbeitsMappe pro vorselektierten Eintrag
von: Armin
Geschrieben am: 09.06.2015 12:38:27
Hallo da.ricci,
warum werden Spalten/Überschriften so flexibel spezifiziert? Brauchst Du das wirklich? Oder selectierst Du nur Zeilen und die Spalten sind eigentlich fest vorgegeben? Die Auswahl der Arbeitsmappe halte ich auch für völlig überflüssig. Wenn Du mehr als eine öffnest kommst Du mit an Sicherheit grenzender Wahrscheinlichkeit schnell zum Bedienfehleren bzw. Abstürzen.
Bitte erläutere noch einmal was Du mit der Selektion erreichen willst, damit ich richtig verstehe was Dein Ziel ist.
Gruß Armin

Bild

Betrifft: AW: neue ArbeitsMappe pro vorselektierten Eintrag
von: da.ricci
Geschrieben am: 09.06.2015 14:16:32
Hallo Armin,
Flexibel ist ein absolutes Muß, da
a.) ich unterschiedliche Mappen von div. "Autoren" bearbeite.
 - aber in allen Mappen ist eine gewisse "Strukturierung" zu erkennen ;-)
   [Üerschrift] - [Body] - [event. Ergebnis]

b.) dieses Makro in meine Add-in Sammlung kommt.
Ziel ist es, die jeweilige "Master-Mappe" und den enthaltenen "Body-Bereich" zu Teilen um z. B:
einmal:
 - nur die relevanten Daten des "Vermittler", dem "Vermittler" als Arbeitsunterlage zu senden.
ein anderes mal:
 - nur die relevanten Daten aus "Ort", dem "Filialleiter" als Arbeitsunterlage zu senden.
Ohne aus "Datenschutz" bzw. "Gebietschutz" o.ä. sämtliche Daten zu verteilen und natürlich aus
"Performance"-Gründen: nicht selten hat eine MasterDatei eine Größe von mehreren MB's und die benötigte Daten,
z.B. je "Vermittler" nur mehr ein "paar" KB's!
Hochrechnung: 2-4 MasterMappen * perWoche * sendAn±500Mitarbeiter == "Enorm" ;-)
bzgl. "Auswahl der Arbeitsmappe......."
Stimmt, ist für das Projekt nicht "zwingend" notwendig - ergab sich so beim UForm "designen" Quasi als "MsgBox"
(fliegt vielleicht)
Grüsse da.ricci

 Bild

Beiträge aus den Excel-Beispielen zum Thema "neue ArbeitsMappe pro vorselektierten Eintrag"