Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
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

Makrozeilen zusammenfassen : Copy Befehl

Makrozeilen zusammenfassen : Copy Befehl
15.05.2013 13:50:56
Toumas
Hallo zusammen,
und wieder stehe ich vor dem nächsten Problem.
ich habe vorhin ein Makro von Hajo bekommen, welches die Zeile :
.Range("B9:Q31").Copy Workbooks("XXXXXXXX.xlsm").Sheets("XXXXX").Range("B9")
enthält.
Nun habe ich mein Makro so umgeschrieben, dass meine Dateien mit festen Namensteil und variablen Datumsteil geöffnet werden um dort im betroffenen Sheet, die vorhandenen Inhalte rauskopiert. (und ich war schon froh, es so hinzubekommen, dass die Datei mit variablen Teil geöffnet wird ;-)
Dabei habe ich (bisher in anderen Makros) die Version :
Sheets("Sheet aus dem es kopiert werden soll").Select
Range(Cells(6, 2), Cells(Cells(Rows.Count, 6).End(xlUp).Row, 8)).SpecialCells(xlCellTypeVisible).Copy
(danach die hässliche Select-Variante mit dem Paste-Befehl)
verwendet.
Nun dachte ich mir, ich könnte "einfach" diesen Befehl, wie in der ganz oben aufgeführten Codezeile verbinden. Rausgekommen ist das hier dabei :
.Range(Cells(6, 2), Cells(Cells(Rows.Count, 6).End(xlUp).Row, 8)).SpecialCells(xlCellTypeVisible).Copy Workbooks("XXXXXXX.xlsm).Sheets("XXXXX").Range("A2")
und natürlich funktioniert es nicht so wie gedacht....
Hat mir jemand einen Tipp ?
vielen Dank im Voraus
Viele Grüße
Toumas
Das ganze Makro, falls das notwendig ist sieht so aus :
Sub Datei_mit_TagesDatum_öffnen()
Workbooks.Open Filename:= _
"\\AAAAA\BBBBB\CCCCC\DDDDD\EEEEE\FFFFF\GGGGG\HHHHH\DATEI" & Format(Date, "dd.mm.yyyy") & _
_
".xls"
' Datei mit festen Namensteil und tagesaktuellen Datumsteil wird geöffnet
Workbooks("MeineDatei.xlsm").Sheets("Postverteilung").Unprotect "123"
With Sheets("SHEET aus dem es kopiert wird")
.Unprotect "123"
.Range(Cells(6, 2), Cells(Cells(Rows.Count, 6).End(xlUp).Row, 8)).SpecialCells( _
xlCellTypeVisible).Copy Workbooks("MeineDatei.xlsm).Sheets("Sheet in das es Kopiert werden soll" _
).Range("A2")
.Protect "123"
End With
Workbooks("DATEI" & Format(Date, "dd.mm.yyyy") & ".xls").Close True
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makrozeilen zusammenfassen : Copy Befehl
15.05.2013 14:03:45
Klaus
Hi Thoumas,
du hast ein " vergessen.
zum verdeutlichen mit _
.Range(Cells(6, 2), Cells(Cells(Rows.Count, 6).End(xlUp).Row, 8)).SpecialCells( _
xlCellTypeVisible).Copy Workbooks("MeineDatei.xlsm__"__).Sheets("Sheet in das es Kopiert werden soll").Range("A2")

nochmal kopierbar:
.Range(Cells(6, 2), Cells(Cells(Rows.Count, 6).End(xlUp).Row, 8)).SpecialCells( _
xlCellTypeVisible).Copy Workbooks("MeineDatei.xlsm").Sheets("Sheet in das es Kopiert werden soll").Range("A2")

Übrigens: Dein Code funktioniert nicht, wenn du ihn um 23:59:59 startest. Denn dann wird ja erst nach Mitternacht geschlossen, und der Dateiname mit DATE ist ein anderer. Das mag banal klingen, aber an solchen Kleinigkeiten sind schon Menschen verzweifelt!
Hier mal eine leicht verdauliche Version, den Overkill mit allen Extras kennst du ja schon aus dem anderen Thread.
Option Explicit
Sub Datei_mit_TagesDatum_öffnen()
'Wenn du das bereits hier "unprotectest", bist du noch im richtigen Focus
Sheets("Postverteilung").Unprotect "123"
Dim wkbNew As Workbook
Workbooks.Open Filename:= _
"\\AAAAA\BBBBB\CCCCC\DDDDD\EEEEE\FFFFF\GGGGG\HHHHH\DATEI" & Format(Date, "dd.mm.yyyy") & _
".xls"
' Datei mit festen Namensteil und tagesaktuellen Datumsteil wird geöffnet
Set wkbNew = ActiveWorkbook 'das neue Workbook merken
'Hier ist das "neue" Workbook im Focus, darum musst du mehr referenzieren
'Workbooks("MeineDatei.xlsm").Sheets("Postverteilung").Unprotect "123"
With Sheets("SHEET aus dem es kopiert wird")
'.Unprotect "123" 'Wozu unprotect? Es wird doch "nur" kopiert, das ist auch bei Protect erlaubt
.Range(Cells(6, 2), Cells(Cells(Rows.Count, 6).End(xlUp).Row, 8)).SpecialCells( _
xlCellTypeVisible).Copy Workbooks("MeineDatei.xlsm").Sheets("Sheet in das es Kopiert werden  _
soll" _
).Range("A2")
'.Protect "123"
End With
'Workbooks("DATEI" & Format(Date, "dd.mm.yyyy") & ".xls").Close True
wkbNew.Close True 'Das neue Workbook schließen, geht auch nach Mitternacht!
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Makrozeilen zusammenfassen : Copy Befehl
15.05.2013 14:09:41
Toumas
Hallo Klaus,
danke für die Antwort.... ich hab gerade mehrfach wie ei blöder auf mein Makro geschaut und das fehlende " gesucht.... selbst nach deiner Hilfe....
oh man... wird Zeit für den Feierabend. ;-)
Ich hoffe mal nicht, dass jemand das Makro nach der Uhrzeit startet *g*
Deine Version teste ich gleich...
Viele Grüße
Toumas

zum Vorzeigen
15.05.2013 14:13:34
Klaus
Hi Toumas,
damit du fix was zum vorzeigen hast, hab ich mir mal erlaubt den Code - ohne Overkill - umzugestalten.
Sub Kopieren1()
Dim wkbOld As Workbook
Dim wkbNew As Workbook
Set wkbOld = ActiveWorkbook
Workbooks.Open Filename:=("\\xxx\xxx\xxx\xxxxx\xxxx\xxx\xxxxxxx\yyyyyyyyyy" & Format(Date, " _
dd.mm.yyyy") & ".xls")
Set wkbNew = ActiveWorkbook
With wkbNew.Sheets("aaaaaa")
.Range(.Cells(6, 2), .Cells(.Cells(.Rows.Count, 6).End(xlUp).Row, 8)).SpecialCells( _
xlCellTypeVisible).Copy
End With
With wkbOld.Sheets("BBBBB")
.Unprotect "123"
.Range("A2").PasteSpecial
.Protect "123"
End With
Application.CutCopyMode = False
wkbNew.Close True
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: zum Vorzeigen
15.05.2013 14:32:52
Toumas
Hallo Klaus,
danke dir für die Mühen, echt klasse !!!
Viele Grüße
Toumas

AW: Makrozeilen zusammenfassen : Copy Befehl
15.05.2013 14:13:58
Toumas
Hallo Klaus,
habe deine Verbesserung und dein neues Makro eingebaut.... funktioniert beides super.
Vielen Dank, du hast mir den Tag gerettet.
viele Grüße
Toumas

Danke für die Rückmeldung! owT.
15.05.2013 14:15:39
Klaus
.

dir fehlen Punkte.
15.05.2013 14:05:57
Rudi
Hallo,
.Range(.Cells(6, 2), .Cells(.Cells(Rows.Count, 6).End(xlUp).Row, 8)).SpecialCells(.....
oder (besser)
.Range(.Cells(6, 2), .Cells(Rows.Count, 6).End(xlUp)).Resize( ,2).SpecialCells(.....
Gruß
Rudi

AW: dir fehlen Punkte.
15.05.2013 14:10:25
Toumas
Hallo Rudi,
danke für die fixe Antwort, werde ich auch gleich testen....
Viele Grüße
Toumas
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige