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.

DAten von einem WB in ein identisches kopieren
#11
Hallo Aloha

nun ja, das Makro ist bei mir einwandfrei gelaufen, dann suchen wir wo es "Bauchschmerzen" hat.  Aus Erfahrungen lernt man!  Den unteren Codeteil kannst du auswechseln, wie du siehst bezieht er sich nur auf die Blaetter die NICHT kopiert werden sollen!

Dann setze bitte vor den Befehl "On Error" ein ' Zeichen, dann wird die Zeile grün!!  Excel denkt jetzt das ist eine Kommentarzeile, der Befehl wird nicht mehr ausgeführt!  So kannst du zum Testen Befehle deaktivieren, ohne sie zu löschen!  Wenn du jetzt das Makro startest wird ein Fehler entstehen und die Zeile gelb gefaerbt werden.  Dann siehst du wenigstens welche Zeile den Fehler verursacht.  So teste ich auch meine Fehler!

Die Angabe von Pfad und Dateinamen in der Tabelle, seperat für Öffnen und Schliessen erleichtert dir die Arbeit wenn sich da mal was aendert.  Sonst müstest du den Text im Makro suchen und dort aender!!  Die Pfade und Datei Namen müssen natürlich korrekt sein, existieren!!!  Sonst klappt es nicht!!

Ich warte mal deine Rückmeldung ab wo der Fehler liegt???  Hellseher bin ich leider nicht ...

öfg Gast 123  


Code:
   'Schleife für alle Source Tabellen prüfen (ausser 1-3!!)
   For k = 1 To SrcSht
      'Prüfen ob alle Tabellen vorhanden sind
      Blatt = SrcWb.Worksheets(k).Name
      'Blatt Résumé, Tableau, Codes nicht kopieren!!
      If Blatt = "Résumé" Or Blatt = "Tableau" Or Blatt = "Codes" Then
      Else  'alle anderen Blaetter Prüfen
      For i = 1 To DestWb.Worksheets.Count
         If DestWb.Worksheets(i).Name = Blatt Then _
            Blatt = "Ja": Exit For
      Next i
Antworten Top
#12
Hallo,

Danke für den neuen Code!
Ich habe den Code mehrfach mit F8 ausgeführt und erhalte jedesmal, nach dem Erstellen des ersten Blattes und nach dem Vergeben des Namens die Fehlermeldung. Besser kann ich das Problem leider nicht lokalisieren.

Gut Nacht
Alooha
Antworten Top
#13
Hallo,
Ich habe die Makro jetzt einige Male laufen lassen. Das erste Mal hat sie funktioniert. Danach habe ich immer die Fehlermeldung bekommen nach dem Erstellen und Benennen der Blätter, aber vor dem Kopievorghang.
Dann habe ich sie mit F8 durchlaufen und die Meldung ist erschienen nachdem das erste Blatt erstellt und benannt war und eine Kopie für das 2. angelegt war.
Ich habe einen Screenshot der Fehlermeldung gemacht.
Da mein Excel in der frz. Sprache ist ist die zweite Zeile auf frz. Ich weiss nicht was es bedeutet.
Ich hänge mal alle 3 Dateien  hier an.
Salve
Alooha


Angehängte Dateien Thumbnail(s)
   

.xlsm   WB with macros F-1.xlsm (Größe: 22,43 KB / Downloads: 3)
.xlsm   Source.xlsm (Größe: 67,21 KB / Downloads: 2)
.xlsx   Destination.xlsx (Größe: 13,57 KB / Downloads: 1)
Antworten Top
#14
Hallo Aloha

danke das du die Datein angehangen hast, ich brauchte nur 1 Minute um den Fehler zu erkennen und konnte ihn sofort beheben.  Zumindestens bin ich überzeugt das es jetzt klappen wird.  Probier es bitte aus.

Damit du auch selbst verstehst was da schief ging gehen wir gleich in ins VBA Grundlagen Wissen.  Computer können nicht denken, sie befolgen nur Befehle.  Aendert man eine Seite, und vergisst die zweite For Next Schleife zu aendern, endet das im Chaos.  Wo also lag der Fehler???

In der ersten For Next Schleife wurden drei Tabellen nicht kopiert!  Dieser Befehl, diese Tbellen zu überspringen, haette auch in die zweite Schleife gehört.  Dort habe ich ihn leider vergessen.  Das war wahrscheinlich alles.

Würde mich freuen wenn es mit dieser Aenderung dann einwandfrei klappt.

mfg  gAst 123 

Code:
   'Schleife für alle Source Tabellen prüfen (ausser 1-3!!)
   For k = 1 To SrcSht
       Blatt = SrcWb.Worksheets(k).Name
       If Blatt = "Résumé" Or Blatt = "Tableau" Or Blatt = "Codes" Then
       Else  'alle anderen Blaetter Prüfen
       SrcWb.Worksheets(k).Range("A6:A66").Copy _
       DestWb.Worksheets(Blatt).Range("A6:A66")
     
       SrcWb.Worksheets(k).Range("F6:AC66").Copy _
       DestWb.Worksheets(Blatt).Range("F6:AC66")
     
       SrcWb.Worksheets(k).Range("U1").Copy _
       DestWb.Worksheets(Blatt).Range("U1")
       End If
    Next k
Antworten Top
#15
Hallo,

leider erhalte ich noch immer die Fehlermeldung.
Ich hänge die Datei mit der MAkro nochmal an, um sicher zu sein, dass ich alles richtig gemacht habe mit dem Ersetzen des Code's.
MfG
Alooha

UPDATE: ich hatte ihn wohl an der falschen Stelle eingefügt; ich habe den Vorgang jetzt wiederholt und es klappt!!


Angehängte Dateien
.xlsm   WB with macros F-1.xlsm (Größe: 21,97 KB / Downloads: 0)
Antworten Top
#16
Hallo,
ich habe mich daran gemacht, den Code auf meine realen WBs (die Source und Destination ersetzen), aber da sind einige Dinge unklar:
Verstehe ich richtig:
in J1: der Pfad der zu öffnenden dateien (wsowohl Quell als Ziel)
in J2: Name der Quelldatei
in J3: Name der leeren Zieldatei
in D1: Pfad unter dem die neue Datei abgespeichert werden soll
in D2: Name unter dem die neue Datei abgespeichert werden soll

Zu D2: der Name muß also jedesmal festgelegt werden? Er soll der selbe sein wie der der Quelldatei, mit dem Zusatz " new"
Zu J2: eigentlich sollen alle Dateien geöffnet werden die sich in einem bestimmten Ordner befinden, aber es geht auch so

Der Code:
Was noch ersetzt werden muß:

Code:
Set SrcWb = Workbooks("Source")
Set DestWb = Workbooks("Destination")
Ich habe es mal so
Code:
Set SrcWb = ThisWorkbook.Sheets(1).Range("J2").Value
Set DestWb = ThisWorkbook.Sheets(1).Range("J3").Value
versucht, aber ich bekomme die Fehlermeldung.
Mir scheint auch, dass 2 mal geöffnet wird.
Vielleicht habe ich den Code trotzdem nicht richtig eingesetzt. Wärst du so lieb, mir das WB mit dem aktualisierten Code zu schicken (oder den Code alleine)?
Valete
Alooha
Antworten Top
#17
Hallo Alloha

interessant das du selbst weiterdenkst und die Set Anweisung aus der Zelle bilden willst.  Ein völlig korrekter Weg.
Ein Problem bei Excel ist, das Excel bei einigen Befehlen sehr "pingelig" ist, launisch wie Menschen, und einfach "nicht mitspielen will"' !!!

Dir fehlt als Anfaenger die Erfahrung wie man das Problem trotzdem lösen kann, hier meine Lösung mit einer grossen Bitte.  Frage mich nicht warum es funktioniert wenn du den Source Text vorher in eine Variable holst, und dann die Set Anweisung mit einer Variablen bildest.  Der Fall kam bereits im Forum vor, ich konnte eine Lösung anbieten, mir fehlt aber jedes Technische Wissen WARUM Excel da so launisch ist.  Akzeptiere es einfach und probier mal den unterne Code aus.

mfg  Gast 123 

    'Set Varişable über Datei aus Zellen bilden
    Datei = ThisWorkbook.Sheets(1).Range("J2").Value
    Set SrcWb = Workbooks(Datei)
    Datei = ThisWorkbook.Sheets(1).Range("J3").Value
    Set DestWb = Workbooks(Datei)
Antworten Top
#18
Hallo,

leider, leider funktioniert es nicht: alle Blätter werden erstellt und benannt und in das erste Blatt mit einem Namen wird der Inhalt von "Codes" kopiert und dann kommt die Fehlermeldung, die Copy-Methode hätte nicht funktioniert (siehe Anhang)

Aufgefallen im Code ist mir folgende Passage:

 "If Blatt = "Résumé" Or Blatt = "Tableau" Or Blatt = "Codes" Then
       Else  'alle anderen Blaetter Prüfen"

Fehlt da nicht die Instruktion, dass diese Blätter nicht kopiert werden sollen?


MfG
Alooha
Antworten Top
#19
Hallo Alloha

ich bin jetzt etwas verwirrt weil das Makro in meiner datei einwandfrei funktioniert, kann verstehen das dir meine Programmierung verwirrend vorkommt.  Schauen wir sie uns im Klartext an.  Beachte dabei den Unterschied zwischen UND und OR Befehlen!!  Hier muss mit OR gearbeitet werden, denn alle drei Blaetter sollen übersprungen werden!!

Logisch und folgerichtig werden diese Tabellen vom IF Befehl korrekt erfasst, und jetzt soll das Programm etwas tun.  Da steht aber nichts!!  Richtig??  Als tut Excel NICHTS !!  Dahinter steht jetzt der Else Befehl, und wenn IF nicht abgearbeitet werden kann wird Else abgearbeitet.  Diese Art der Programmierung ist ein alter Programmiertrick, den Anfaenger am Anfang nur schwer verstehen!  Bei IF NICHTS tun - ist nur schwer vorstellbar!!

 "If Blatt = "Résumé" Or Blatt = "Tableau" Or Blatt = "Codes" Then
  Else  'alle anderen Blaetter Prüfen"

Ansonsten stehe ich jetzt auf dem Schlauch wieso das Programm diese Tabellen nicht als Ungültig erkennt???  
Mein Verdacht:   sind die Tabellen Namen 100% korrekt???   Sonst kopiere alle Namen bitte noch mal direkt ins Makro.  Manchmal hift das.  Besonders bei Sonderbuchstaben wie:  "é".  Oder gibt es im Tabellen Namen am Anfang oder Ende noch ein Space, " " ???   Prüfe das bitte zuerst noch mal nach.

mfg Gast 123
Antworten Top
#20
Hallo,

ich habe nochmal von vorne begonnen, d.h. die Datei mit deinem Code geöffnet, dann die 3 Stücke Code ersetzt durch diejenigen die du nachgereicht hast, dann habe ich den Code mit F8 durchlaufen lassen und lande immer nach dem ersten neuen Sheet bei der Fehlermeldung.
Aber, wenn ich einfach auf den Knopf drücke, dann funktioniert die Makro! Wie ist das möglich? Ich habe sie einige Male probiert.

Dann habe ich die Namen meiner realen Dateien im Blatt eingegeben, und auf den Knopf gedrückt. Nach dem Erstellen des letzten Blattes, also dann, wenn der Kopiervorgang beginnen soll, bekomme ich die Meldung, die Methode Copy der Klasse Range sei fehlgeschlagen.
Da scheint es also ein Problem zu geben.
Weggelassen, weil ich dachte, das würde keine Rolle spielen, hatte ich 2 Informationen: dass alle zu kopierende Zellen jeweils vertikal mit einer zweiten verbunden sind und dass alle Blätter geschützt sind.
Ich habe den Schutz und die Verbindungen aufgehoben, aber es ändert nichts.
Bis später
Alooha

UPDATE: Mir ist aufgefallen, dass die erste Zelle die kopiert werden soll nicht F6 sondern F5 ist: F5 und F6 sind vertikal verbunden und der Wert steht in F5. Mich wundert es, dass Excel sich daran stört, denn es ist genau da wo das Problem lag: wenn ich in der Makro F6 vdurch F5 ersetze dann funktioniert es!

Was, wenn ich das sagen darf, ein wenig bequemer wäre, wäre dass die Makro alle Dateien in einem bestimmten Ordner öffnen würde und eine nach der anderen in das immer gleiche Destination WB kopieren würde, dieses abspeichern unter dem Namen des SourceWb's + "new", und die nächste Datei kopieren. Ich nehme an, zuerst müsste das DestinationWB ohne abzuspeichern geschlossen und dann wieder jungfräulich geöffnet werden.
Das ist aber nicht unentbehrlich; ich habe mir eben eine Methode mit Listen gebastelt um die Namen der Dateien zusammenzusetzen.
Antworten Top


Gehe zu:


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