587 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

meine Datei hat 4 Tabellen

Tabelle1
Tabelle2
Tabelle6=HaWa_Test
Tabelle7=HaWa soll später nicht sichtabr sein ausgeblendet

Tabelle6 ist das original mit Formeln
Tabelle7 ist eine exakte Kopie von Tabelle3 nur ohne Formel und Werte.

Ich möchte die Tabelle6 kopieren und in Tabelle7 nur die Werte einfügen, eine neue Datei erstellen und danach die Tabelle7 leeren.

Folgendes konnte ich dem Makrorecorder bei mehreren Anläufen entlocken. Den Speicherpfad hab ich imNetz gefunden.

Sub Makro3()
Application.ScreenUpdating = False
Cells.Select
Selection.Copy
Sheets("HaWa").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("A:EJ").Select
Application.CutCopyMode = False
Worksheets("HaWa").Copy
ActiveWorkbook.SaveAs "C:\Users\CHEF\Desktop\test\" & Format(Range("FE3")) & Format(Range("A1")) & ".xlsx"
ActiveWorkbook.Close False
Sheets("HaWa").Range("clear").ClearContents
Application.ScreenUpdating = True
End Sub


Das Makro funktioniert eigentlich auch nur sieht es zum einen sehr unprofessionell aus und macht zudem unschöne Bewegungen und ich würde das ganze auch gerne aus einem Tabellenblatt meiner Wahl heraus starten. :-) Hat vielleicht jemand einen besseren Tip parat?

Gruß
energun222

13 Antworten

0 Punkte
Beantwortet von
Ich nochmal,

hab vergessen die Datei hochzuladen.

https://www.dropbox.com/s/ownr5imf9r5bhxv/kopieren.xlsm?dl=0

Achtung die Datei enthält Verknüpfung da passiert aber nix. Die original ist viel schöner. :-)

Gruß
energun222
0 Punkte
Beantwortet von
Hallo zusammen,

bin schon ein bissl weiter. Ich kann das makro aus einer beliebigen Tabelle starten, es kopiert richtig und erstellt auch eine neue Datei. Aber irgendwie sind die neue Datei und die Tabelle wo die Werte nach dem einfügen wieder gelöscht werden immer noch komplett markiert. Mein Code sieht bisher so aus.

Sub Makro3()
Application.ScreenUpdating = False
Worksheets("HaWa_Test").Range("A:EJ").Copy
Worksheets("HaWa").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Worksheets("HaWa").Copy
ActiveWorkbook.SaveAs "C:\Users\CHEF\Desktop\test\" & Format(Range("FE3")) & Format(Range("A1")) & ".xlsx"
ActiveWorkbook.Close False
Sheets("HaWa").Range("clear").ClearContents
Application.ScreenUpdating = True
End Sub


Ich hoffe es ist nicht schlimm wenn ich einen Doppelpost mache nur probiere ich ja weiter und warte nicht nur.

Gruß
energun222
0 Punkte
Beantwortet von
Hallo energun222 :-)

Application.CutCopyMode = False


Gruss Nighty
0 Punkte
Beantwortet von
Hallo Nighty_

das hat leider keine Auswirkung zumindestens keine die ich sehe. Die Tabelle die ich kopiere ist stets unselektiert nur die Tabelle in der die Werte eingefügt werden und im neuen File ist alles markiert.

Gruß
energun222
0 Punkte
Beantwortet von
Hallo energun222 :-)

Da der bezug wahrscheinlich aufgehoben wurde,ist eine Angabe des Worksheets notwendig!

Worksheets("DeineTabelle").Application.CutCopyMode = False


Gruss Nighty
0 Punkte
Beantwortet von
Hallo zusammen,

also entweder ich bin zu blöd das einzupflegen oder es fehlt an einer anderen Stelle etwas.

Mein Code jetzt hoffentlich ein bißchen aufgeräumt mit Beschreibung.

Sub copyhawamail2()
Application.ScreenUpdating = False
With Worksheets("HaWa")
'kopiert die Tabelle HaWa von A bis EJ
.Range("A:EJ").copy
End With
With Worksheets("HaWa_Mail")
'fügt das vorher kopierte in die Tabelle HaWa_Mail in A1 wieder ein
.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
'setzt den Autofilter von A4 bis EJ4
.Range("A4:EJ4").AutoFilter
'hier sollte eigentlich die Markierung aufgehoben werden
.Application.CutCopyMode = False
'ausgeblendete Tabelle HaWa_Mail ist sichbar
.Visible = xlSheetVisible
'ausgeblendete Tabelle HaWa_Mail wird kopiert
.copy
'aus der kopierte ausgeblendete Tabelle HaWa_Mail wird eine neue Datei erstellt
ActiveWorkbook.SaveAs "\" & "MHD_Liste_zum_LT_" & Format(Range("A1")) & ".xlsx"
'alte Datei wird nicht geschlossen
ActiveWorkbook.Close False
'der Inhalt der ausgeblendete Tabelle HaWa_Mail wird wieder gelöscht
.Range("clear").ClearContents
'ausgeblendete Tabelle HaWa_Mail ist unsichbar
.Visible = xlSheetHidden
End With
Application.ScreenUpdating = True
End Sub


Kommt mir so vor als wenn das beim speichern passiert.

Und hier meine Datei nochmal im aufgeräumten Zustand:

https://www.dropbox.com/s/xmdl9fulzwk1v9w/kopieren1.xlsm?dl=0

Gruß
energun222
0 Punkte
Beantwortet von
Hallo energun223

Hab leider nur eine alte Excelversion!
Kann die Dateien nicht lesen,daher mal auf gut glück

Nachdem Copy PasteSpecial/etc. ausgeführt wurde erfolgt die CutCopyMode Anweisung zum Quellworksheet!
z.b für die erste Copyanweisung
.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
Worksheets("HaWa").Application.CutCopyMode = False


Was macht die zweite Copyanweisung?

Der Name ist beeindruckend!
"\" & 'Macht was?
Format(Range("A1")) & 'Welches Format?



Gruss Nighty
0 Punkte
Beantwortet von
Hallo,

"\" & 'Macht was?


Speichert in den Pfad deiner Wahl, hier zum Beispiel C:\

C:\ deshalb weil bei den meisten das laufwerk C vorhanden ist und bei testen so die datei schneller wieder gefunden wird bei mir sehe das so aus:

C:\Users\CHEF\Desktop\test\


ActiveWorkbook.SaveAs "\" & "MHD_Liste_zum_LT_" & Format(Range("A1")) & ".xlsx"


Der neue Dateinamen setzt sich aus diesem Teil zusammen MHD_Liste_zum_LT_ und eben A1. In A1 steht nach dem kopieren ein Datum. Sieht dann so aus.

MHD_Liste_zum_LT_06.03.2017

Ich habe die ganze kopierweise gewählt weil das original ca. 30.000 Formeln enthält, wenn ich dies kopiere und davon eine neue Datei erstelle geht selbst mein PC teilweise in die Knie geht. :-)

Gruß
energun222
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Energun,

der Fehler liegt in der Zeile
ActiveWorkbook.SaveAs "\" & "MHD_Liste_zum_LT_" & Format(Range("A1")) & ".xlsx"


"\" & 'Macht was?
Speichert in den Pfad deiner Wahl, hier zum Beispiel C:\


Macht er eben nicht mit nur "\" als Pfadangabe. Du musst beim Speichern den ganzen Speicherpfad, also auch mit Laufwerksbuchstaben angeben:

So funktioniert es:
ActiveWorkbook.SaveAs "C:\Users\CHEF\Desktop\test\" & "MHD_Liste_zum_LT_" & Range("A1").Value & ".xlsx"


Auf das Format(Range("A1")) kannst du hier verzichten (lies das einfach mal: KLICK).

Gruß

M.O.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

noch mal ich ;-).

Oder falls du dein Datum formatieren willst, dann z.B. so:

ActiveWorkbook.SaveAs "C:\Users\CHEF\Desktop\test\" & "MHD_Liste_zum_LT_" & Format(Range("A1"), "YYYY_MM_DD") & ".xlsx"


Gruß

M.O.
...