Anzeige
Archiv - Navigation
896to900
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
896to900
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datei anlegen, bestimmte Blätter kopieren, Mailen

Datei anlegen, bestimmte Blätter kopieren, Mailen
20.08.2007 13:47:00
jens
Halle Excel-Gemeinde und liebe VBA Freunde.
Ich sehe im Moment den Wald vor lauter Bäume nicht mehr bei folgendem Problem: Ich habe eine Arbeitsmappe mit diversen Arbeitsblättern und möchte Mittels einer vorhandenen UserForm
a) eine neue Datei anlegen (C:\Temp\irgendwas.xls) + aktuellem Datum
b) in diese irgendwas.xls nun aus der Ursprungsmappe nur bestimmte Blätter kopieren lassen, aber auch nur die Werte, bzw. ein Diagramm
c) die irgendwas.xls soll dann noch für den E-Mailversand vorbereitet werden, also noch nicht verschickt und nach dem verschicken wieder gelöscht werden.
Habe hier schon jede Menge Beispiele gesehen, bin daher auch eigentlich davon überzeugt das es eine Lösung gibt, aber leider waren das immer nur Ansätze für einzelne Punkte meines Anliegens. Da ich VBA eher mit dem Rekorder „beherrsche“ kann ich derzeit diese Schnipsel nicht wirklich sinnvoll zusammenbasteln. Ich bitte um Nachsicht, sollte ich ein Posting mit einem Lösungsansatz tatsächlich übersehen haben.
Gruß aus dem Ruhrgebiet
Jens

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei anlegen, bestimmte Blätter kopieren, Mailen
20.08.2007 15:50:00
Oberschlumpf
Hi Jens
1. Stell uns bitte eine Bsp-Datei, die genau wie deine Originaldatei aufgebaut ist, per Upload zur Verfügung
(bitte mit ausreichend Bsp-Daten füllen)
2. Um welche Blätter, Diagramm handelt es sich genau?
3. Mit welchem Mail-Programm versendest du die Datei?
4. Was meinst du mit "für Mailversand vorbereiten" ?
Ich kenn da nur die Möglichkeit, eine Mail erstellen, die Datei anhängen, Mail nur anzeigen, aber nicht automatisch versenden. Meinst du das?
Danke + Ciao
Thorsten

AW: Datei anlegen, bestimmte Blätter kopieren, Mai
20.08.2007 16:44:46
Jens
Hallo Thorsten
zu1)
die Beispieldatei muss ich zurechtfummeln, habe nur eine mit Kundendaten; müsste ich nachreichen
zu2)
es sind versteckte Blätter, auf denen sich zum einen eine kumulierten Datenansicht befindet, welche dann in einem weiteren Blatt nochmals als Diagramm dargestellt wird.
zu3)
sorry, ich setze immer Outlook für alle voraus, mein Fehler...es handelt sich um Outlook (2003+2007)
zu4) jepp, genau dies meine ich
Mir würde es schon auf die Sprünge helfen, wenn ich EINEN Code für's Anlegen einer Datei hätte, inkl. dem hineinkopieren bestimmter Arbeitsblätter als der 'Masterdatei' (man hört sich das wichtig an *g*)
Danke für Deine Rückfragen
Gruß aus dem Ruhrgebiet
Jens

Anzeige
AW: Datei anlegen, bestimmte Blätter kopieren, Mai
20.08.2007 16:44:00
Jens
Hallo Thorsten
zu1)
die Beispieldatei muss ich zurechtfummeln, habe nur eine mit Kundendaten; müsste ich nachreichen
zu2)
es sind versteckte Blätter, auf denen sich zum einen eine kumulierten Datenansicht befindet, welche dann in einem weiteren Blatt nochmals als Diagramm dargestellt wird.
zu3)
sorry, ich setze immer Outlook für alle voraus, mein Fehler...es handelt sich um Outlook (2003+2007)
zu4) jepp, genau dies meine ich
Mir würde es schon auf die Sprünge helfen, wenn ich EINEN Code für's Anlegen einer Datei hätte, inkl. dem hineinkopieren bestimmter Arbeitsblätter als der 'Masterdatei' (man hört sich das wichtig an *g*)
Danke für Deine Rückfragen
Gruß aus dem Ruhrgebiet
Jens

Anzeige
AW: Datei anlegen, bestimmte Blätter kopieren, Mai
20.08.2007 20:12:00
Jens
nAbend :-)
Hab' jetzt mal ne Reduzierte Version geladen; INPUT Blatt dient nur der Dateneingabe, Dreh- und Angelpunkt soll das Blatt BEARBEITEN werden. Vielleicht kann ja wirklich jemand helfen, wäre klasse!
https://www.herber.de/bbs/user/45225.xls
Gruß aus dem Ruhrgebiet
Jens

AW: Datei anlegen, bestimmte Blätter kopieren, Mai
21.08.2007 08:32:10
Oberschlumpf
Hi Jens
Sry erst mal, musste gestern noch wohin, aber nun hab ich wieder Zeit...und n paar Fragen mehr :-)
Frage zu deinen zuerst gestellten Fragen - Blätter/Diagramm kopieren:
In der Bsp-Datei soll nur das versteckte Blatt STATISTIK (nur Werte; keine Formeln) und das Blatt CHART in eine neue Datei kopiert werden. Hab ich das so richtig verstanden?
Frage zu der neuen Aufgabenstellung:
Mit dem Button a...Daten bearbeiten aus Userform sollen sowohl im Blatt STATISTIK als auch im Blatt INPUT alle Leerzeilen gelöscht werden, oder?
Mich irritieren zwei Dinge:
1. Du hast in Makro1 + Makro2 diese Codezeile stehen.
Set TB = Worksheets(1)
So wird in beiden Makros immer das erste Sheet in der Reihenfolge der Sheets angesprochen - hier also INPUT - egal, welches Sheet du zuvor mit ...Select anzeigen lässt
Für das Statistik-Makro (Makro1) müsste die Zeile lauten
Set TB = Worksheets(3)
2. WANN sollen Leerzeilen gelöscht werden?
Mit der Codezeile
If IsEmpty(TB.Cells(i, 1)) Or TB.Cells(i, 1) = "0" Then
überprüfst du Spalte A, ob leer oder 0
Nun wären zwar alle Zeilen, in denen in Spalte A die Überprüfung zutrifft, gelöscht, aber trotzdem ist z Bsp die erste Zeile fast ganz ohne Einträge, oder in anderen Zeilen fehlen Datum, Uhrzeit, etc.
Ist das genau so gewollt? Sollen diese Zeilen also erhalten bleiben?
So, das war's erst mal wieder :-)
Ciao
Thorsten

Anzeige
AW: Datei anlegen, bestimmte Blätter kopieren, Mai
21.08.2007 10:08:32
Jens
Hallo Thorsten.
Kein sry nötig, bin ja frpg wenn ich überhaupt nen Ansatz habe, da (siehe oben) VBA nur mit Rekorder :-(
Das Blatt STATISTIK habe ich als Notbehelf mal ins Leben gerufen, da dort die eigegebene Daten aus INPUT quasi gezählt werden. Diese sollen dann als Basis für die Datenübersicht und das Diagramm dienen.
zu1)

Für das Statistik-Makro (Makro1) müsste die Zeile lauten
Set TB = Worksheets(3)

Dies resultiert aus meinem Umfassende Wissen über VBA, muss geändert werden, danke wieder was gelernt.
zu2)
LEERZEILEN sollen durch betätigen des Button A gelöscht werden; hierbei gilt: steht in Spalte A nichts oder eine Null (gilt für STATISTIK) dann ganze Zeile weg. Es kann durchaus vorkommen, dass bei den verbleibenden Zeile auch mal eine Leerzeile jenseits von A auftasucht, dies ist OK.
In die neue, noch zu bildende Datei sollen die Blätter kopiert werden:
INPUT (nur die Werte, schön wäre auch die Formatierung
DATA und CHART
Pivot ist hierbei übrigens eine 'Notlösung' da ich mir damals, als diese Datei entstand, nicht anders zu helfen wusste. Sollte es etwas einfacheres geben, bin ich dafür natürlich offen.
Hoffe ich habe alles einigermaßen verständlich rübergebracht.
Gruß (und Danke) aus dem Ruhrgebiet
Jens

Anzeige
AW: Datei anlegen, bestimmte Blätter kopieren, Mai
21.08.2007 16:29:00
Oberschlumpf
Hi Jens
puhh...fertig :-) (glaub ich zumindest)
Hier die Datei
https://www.herber.de/bbs/user/45248.xls
Wenn du jetzt auf Button B klickst, passiert das hier...
...eine neue Exceldatei wird erstellt
...die Sheets INPUT, DATA und CHART werden kopiert und in die neue Datei eingefügt
Bei INPUT werden nur die Werte und Formate eingefügt
Bei DATA werden nur die Werte eingefügt. Es existiert in der neuen Datei keine Pivot-Tabelle mehr
Bei CHART wird zwar zuerst alles eingefügt, aber die Verknüpfung zu den Werten muss per VBA neu gesetzt werden, da die "alten" Verknüpfungen zur Ursprungsdatei bestehen bleiben.
Nach Änderung durch VBA beziehen sich die neuen Verknüpfungen nun auch auf die Werte in DATA in der neuen Datei.
...die neue Datei wird gespeichert
Aber nicht in einem Temp-Verzeichnis, sondern der Einfachheit halber im gleichen Verzeichnis wie die Ursprungsdatei.
...die neue Datei wird wieder geschlossen
...es wird eine neue eMail erstellt
Die Felder für Empfängermailadresse, Betreff und Body (der eigentliche Mailtext) werden per VBA mit Eingaben versehen. Natürlich wird auch die zuvor gespeicherte Exceldatei angehängt ;-)
So muss man eigentlich nur noch auf den Sendebutton klicken.
Die Codezeilen, in denen die Mailadresse, Betreff usw vorgegeben werden können, sind im Makro kenntlich gemacht und können von dir angepasst werden.
...fertig :-)
Da ich davon ausgehe, dass in der Originaldatei mehr als nur 4 Städte eingetragen sind, habe ich so programmiert, dass ALLE Eintragungen berücksicht werden.
Ich habe zum Testen STADTNAME 5 und alle zugehörigen Daten eingetragen, die Pivot-Tabelle aktualisiert, und mein Makro hat in der neuen Datei auch die 5. Stadt mit aufgeführt.
Es dürfen allerdings nicht mehr SPALTEN als in deiner Bsp-Datei verwendet werden.
Deine Idee, die Datei nach Erstellen und (irgendwann) Absenden der Mail wieder zu löschen, ist m. W. so nicht möglich, da die Mail ja nur erstmal nur angezeigt werden soll. Solange die Mail nicht gesendet wurde, kann die Datei nicht gelöscht werden. Und niemand - zumindest ich nicht - weiß, wann denn die Mail gesendet wird.
Ich habe das Problem so gelöst:
Bevor die oben beschriebenen Aufgaben (neue Datei, Sheets kopieren + einfügen, usw) durchgeführt werden, wird zuerst geprüft, ob die "neue" Datei - ich hab den Namen "OL_TEMP.XLS" vergeben - schon existiert. Wenn ja, wird diese Datei zuerst gelöscht, und eben dann wird der restliche Code ausgeführt.
Konnte ich denn nun auch ein wenig helfen, den Gaunern das Fürchten zu lehren? :-)
Ciao
Thorsten

Anzeige
AW: Datei anlegen, bestimmte Blätter kopieren, Mai
21.08.2007 16:58:00
Jens
Hallo Thorsten.
Vor der eigentlichen Dankesrede, muss ich Dir dies zeigen Laufzeitfehler '1004'
ANWENDUNGS- oder objektdefinierter Fehler
lt. Editor bezieht sich das auf

'wenn Blattname NICHT DATA, muss auch in der nächsten Zeile "Data" angepasst werden
.SeriesCollection(liLegende).Name = "=Data!R1C" & liLegende + 1


Kann das daran liegen, dass ich mit 2007 unterwegs bin? Auf ner älteren Version habe ich das nicht getestet? Habe auch an nichts rumgefummelt; einfach die Datei gezogen und ausprobiert!?
Gruß aus dem Ruhrgebiet
Jens

Anzeige
AW: Datei anlegen, bestimmte Blätter kopieren, Mai
21.08.2007 17:44:00
Oberschlumpf
Hi Jens
Ja...shit...es wird wohl an XL 2007 liegen...so ein Mist!
Ich benutze XL XP - also 2 Versionen vorher - da funzt das einwandfrei.
Leider kann ichs nich an 2007 anpassen, da ich 2007 nicht habe.
Und so ausm Kopp weiss ich auch keine Lösung.
Und was tun wa nun?
Ciao
Thorsten

AW: Datei anlegen, bestimmte Blätter kopieren, Mai
21.08.2007 17:58:00
Jens
Ich schmeiß' mal eben ein anderes System an und pack da mal MSO2003 drauf...stay tuned

AW: Datei anlegen, bestimmte Blätter kopieren, Mai
21.08.2007 18:13:02
Jens
Jetzt unter MS Excel 2003:
Beim Aufruf der Datei bekomme ich auch einen Laufzeitfehler '1004': Kann Datei nicht lesen und dieses hier

ThisWorkbook.Sheets("Chart").Copy Before:=ActiveWorkbook.Sheets(Sheets.Count)


wurde im Editor angezeigt. Mmhh

Anzeige
AW: Datei anlegen, bestimmte Blätter kopieren, Mai
21.08.2007 20:43:06
Oberschlumpf
Hi Jens
diese Zeile
ThisWorkbook.Sheets("Chart").Copy Before:=ActiveWorkbook.Sheets(Sheets.Count)
kopiert eigentlich erst mal das Sheet mit Namen "Chart" aus deiner Bsp-Datei in die neue Datei.
So habe ich schon mal das Diagramm als Grundgerüst, und muss "nur" noch, wie schon beschrieben, die Verknüpfungen zu den richtigen Werten korrigieren.
Nun wundert mich allerdings, dass der Code auch ohne diese Zeile funktioniert.
Habs jetzt selbst (noch) nicht getestet, aber ich erkläre es mir bis jetzt so, dass vllt alle Befehle, die auf ein nicht vorhandenes Diagramm zugreifen wollen, eben automatisch ein Diagramm erstellen...hmm...nee..vergiss das...ich hab noch keine Ahnung, warum es trotzdem funktioniert, freue mich aber, DASS es funktioniert :-)
Ich schau mir meinen Code vllt später noch mal an - wenn nicht heute, dann aber morgen.
Ciao erst mal
Thorsten

Anzeige
AW: Datei anlegen, bestimmte Blätter kopieren, Mai
21.08.2007 22:01:00
Oberschlumpf
Hi Jens
Nun taucht auch bei mir der Fehler mit "kann datei nich lesen" auf...komisch?
Aber gelöst hab ich das Problem so.
Tausch mal diesen Code

ThisWorkbook.Sheets("Chart").Copy Before:=ActiveWorkbook.Sheets(Sheets.Count)
ActiveSheet.ChartObjects("Diagramm 1").Activate
With ActiveChart
Application.ScreenUpdating = True


gegen diesen hier aus


Application.ScreenUpdating = True
ThisWorkbook.Sheets("Chart").Copy Before:=ActiveWorkbook.Sheets(Sheets.Count)
ActiveSheet.ChartObjects("Diagramm 1").Activate
With ActiveChart


Ich vermute, Sheets mit Pivot-Tabellen können nur kopiert/eingefügt werden, wenn die Bildschirmaktualisierung (ScreenUpdating) aktiviert ist. Aber genau weuiß ich das nicht, weil ausgerechnet Pivot-Tabellen noch zu meinen un-gelösten Excel-Geheimnissen gehören :-)
Aber zumindest hab ich nun nicht mehr den oben genannten Fehler.
Läufts mit obiger Code.Korrektur nun auch bei dir MIT der Zeile, die du auskommentiert hattest?
Ciao
Thorsten

Anzeige
AW: Datei anlegen, bestimmte Blätter kopieren, Mai
21.08.2007 22:10:10
Jens
Halöle Thorsten.
Code getauscht, Zeile wieder rein genommen...Fehler taucht wieder auf. Zeile wieder auskommentiert läuft der Code durch...
Hast Du Dir das Wissen selber angeeignet (dann habe ich ja noch Hoffnung ;-) ) oder hast Du von Berufswegen (schult o. ä.) damit zu tun
Gruß, Jens (Ruhrgebiet)
!! 1.000 Dank für Deine Unterstützung & Hilfe !!

AW: Datei anlegen, bestimmte Blätter kopieren, Mai
22.08.2007 06:51:57
Oberschlumpf
Hi Jens
Und eben hatte ich den Fehler auch wieder...arghhh!!
Neuer Versuch
Ich stellte gerade fest, dass zumindest bei mir noch das Sheet "Statistik" nicht mehr ausgeblendet war.
Vielleicht ist es auch bei dir sichtbar. Ich weiß nicht mehr, wann ich es einblendete.
Na ja, auf jeden Fall...nach Ausblenden, Speichern, Datei schließen/wieder öffnen, lief der Code - ohne Änderung.
Wenn das bei dir auch nicht hilft, dann kannst du ja besagte Zeile auslassen - dann läufts ja bei dir - wobei ich das auch noch nicht verstehe. Aber vllt liegt das (auch?) an der Version - du nutzt 2003..ich eben 2002.
Ciao erst mal wieder
Thorsten

AW: Datei anlegen, bestimmte Blätter kopieren, Mai
22.08.2007 07:01:00
Oberschlumpf
Hi..hab was vergessen :)
Ich hab mir Excel-VBA an einem Oster-WE (Do-Mo) selbst beigebracht..grins...zumindest die Anfänge. Ich wollte eine Datei, die nur über ein Userform gesteuert wird (Arbeitsstundenplan für Arbeit)..na ja..Do-Abend begonnen...Mo-Nachmittag war ich fertig :-)
Aaabeerr.... :-)
Ich hatte davor schon diverse Kenntnisse in mehreren Basic-Dialekten - zum Schluss in Visual Basic.
Auch das hab ich mir alles selbst beigebracht - aber über mehrere Jahre...
Na ja, und VB + VBA sind sich sehr ähnlich, bis eben auf die speziellen Befehle, die den Zugriff auf Sheets, Zellen, Zellbereiche und so ermöglichen.
Für VBA hab ich nie ein Buch benutzt. VBA hab ich allein durch mein VB-Wissen und durch dieses Forum - das beste zum Thema Excel-VBA - gelernt.
Ich denk, das könnte jeder. Wichtig ist halt, dass man immer am Ball bleibt und vieeel Zeit mitbringt.
Ciao
Thorsten

AW: Datei anlegen, bestimmte Blätter kopieren, Mai
22.08.2007 16:01:07
Jens
Hi Thorsten.
Ich habe nun die Version von gestern Abend, die ja funktionierte, mal auf meinem Notebook probiert (XP mit SP2, Excel 2007) und bekommen nun

Laufzeitfehler 9:
Index außerhalb des gültigen Bereichs
ActiveWindow.Zoom = 90
With ActiveSheet
.Name = "Input" 'wenn gewünscht, hier den Blattnamen für INPUT in neuer Datei ä _
ndern
.Range("A1").Select
End With
*    ActiveWorkbook.Sheets(2).Activate


die Zeile mit dem * wird im Editor zum debuggen markiert...ich versteh' jetzt gar nichts mehr...
Gruß, Jens (Ruhrgebiet)

AW: Datei anlegen, bestimmte Blätter kopieren, Mai
22.08.2007 16:50:00
Oberschlumpf
Hi Jens
Wie gesagt, Excel 2007 und ich...wir kennen uns noch gar nicht.
Vllt funzt es ja, wenn du all diese Zeilen
Application.ScreenUpdating = False
Application.ScreenUpdating = True
löscht.
Dann flackert es zwar auf dem Bildschirm ein wenig, aber ich stellte fest, dass zumindest bei mir dann gar keine Fehler mehr bzgl der Pivot-Tabelle auftreten
Aber dieser Vorschlag ist halt auch nur eine Idee.
Arbeitest du noch mit "meiner" Datei, oder hast du meinen Code schon in deine Datei übertragen?
Wenn letzteres der Fall ist, könnte dies eine weitere Fehlerquelle sein, da in deiner Datei vllt Code vorhanden ist, der so mit meinem kollidiert und angepasst werden müsste.
Der von dir "vorgestellte" Fehler bemängelt, dass in der aktuellen Datei (ActiveWorkbook) ein 2. Sheet ( Sheets(2) ) gar nicht existiert.
Ciao
Thorsten

AW: Datei anlegen, bestimmte Blätter kopieren, Mai
22.08.2007 20:41:38
Jens
nAbend!!
Ich verstehe jetzt gar nichts mehr. Habe nochmals Deine Originaldatei genommen, die bekannte Zeile auskommentiert und den Code mal machen lassen...klappte bis hin zu E-Mailvorbereitung, auf 2007.
Grundsätzlich habe ich immer nur mit Deinem Originalcode getestet, dass Ganze als Backup natürlich.
Ich raff' das nicht mehr...
Gruß, Jens

AW: Datei anlegen, bestimmte Blätter kopieren, Mai
21.08.2007 19:40:00
Jens
nAbend Thorsten...
...hab' da mal ne Frage...was macht die erste 'Fehlerhafte' Zeile eigentlich. Habe die jetzt mal rauskommentiert und der Code läuft augenscheinlich komplett durch...sehe die E-Mail, Deinen (lustigen) Text, mit attachment und die Daten sind auch drin!? Wofür ist die denn dann?
Hab das auch mal mit einem größeren Dateninhalt getestet (130 Zeilen) und sitze hier fett grinsend vor meinen Rechnern...das klappt 1A (ohne die o. g. Zeile, deren Bedeutung mir nicht klar ist). Also für mich bist Du der Größte (sorry an die anderen!!) da ich mir das genauso vorgestellt habe. Ich gehe mal davon aus, dass ich in diesem Forum noch ne Möglichkeit finden werde, dass die Pivotdaten auch noch nebenbei aktualisiert werden und voila, la result.
Ich danke Dir von ganzem Herzen für diese hervorragende Arbeit, ich weis da hast Du nichts von, aber ich freue mich da riesig drüber!!
Ich habe nur die Befürchtung, dass wir noch häufiger voneinander lesen werden, da ich noch einige Idee habe, deren Umsetzung in VBA mir derzeit noch nicht gelingt, bin halt Anfänger.
Gruß, Jens (Ruhrgebiet)
ach ja, zum Hintergrund:
Generiert wird aus den Originaldaten eine Monatsübersicht. Aus dieser geht hervor, in welchem Objekt wann was warum vorgefallen ist. Insofern hast Du leider nicht geholfen 'den Gaunern das Fürchten zu lehren' da ich mit Daten aus der Historie hantiere, *sry*

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige