Copy&Pase Excel Marko

Hallo zusammen,

und zwar bin ich grade dabei einen Marko auzusetzen, der mir Daten aus einer Excel Tabelle in eine andere Excel Tabelle (formatier) kopiert. Soweit so gut er läuft auch. Allerdings stell ich noch 2 Anforderungen an ihn, die ich nicht weiß ob oder wie sie umgesetzt werden können.

  1. Er soll automatisch beim Aufruf der ersten Excel Tabelle starten
  2. Er soll die vorformatierte Excel Tabelle selbstständig öffnen, dort reinkopiern, und speichern (im besten fall noch unter variablen namen, die man zb abhängig von der Systemzeit oder dem Namen der ursprünglichen Excel Tabelle wählt.

Ziel ist es halt diesen Marko nachts automatisch laufen zu lassen, und somit ungeordnete Daten die aus einer Datenbank in ein Excel Dokument geschrieben werden zu ordnen indem sie in eine Excel Tabelle kopiert werden die bereits vorformatiert ist.

Quelltext bis jetzt:

Sub CopyPaste()

’ Copy & Paste Makro zur Erstellung von Excel Tabellen aus Cristal Report

’ Tastenkombination: Strg+t

Application.CutCopyMode = False
Selection.Copy
Range(„A2:AF4000“).Select
Application.CutCopyMode = False
Selection.Copy
Windows(„Vorlage.xls“).Activate
Range(„A2“).Select
ActiveSheet.Paste

End Sub

Hallo Kev,

  1. Er soll automatisch beim Aufruf der ersten Excel Tabelle
    starten

„Vorlage.xls“ ist eine Excel-Datei bzw. eine Mappe. Diese Mappe enthält Tabellenblätter.
Ich habe das Gefühl mit „erste Excel Tabelle“ meinst du eine Mappe.
Oder meinst du das erste Tabellenblatt einer Mappe?
Beides bedingt unterschiedliche Modulorte für die Codes.

  1. Er soll die vorformatierte Excel Tabelle selbstständig
    öffnen, dort reinkopiern, und speichern (im besten fall noch
    unter variablen namen, die man zb abhängig von der Systemzeit
    oder dem Namen der ursprünglichen Excel Tabelle wählt.

Ziel ist es halt diesen Marko nachts automatisch laufen zu
lassen, und somit ungeordnete Daten die aus einer Datenbank in
ein Excel Dokument geschrieben werden zu ordnen indem sie in
eine Excel Tabelle kopiert werden die bereits vorformatiert
ist.

Erstelle die eine Vorlage, also eine Mappe die du als .xlt abspeicherst. Da kannst du ja formatieren, Überschriften eintragen, Tabellenblätter umbenennen/löschen/einfügen und so weiter.

ungetestet, test es in einem normalen Modul:

Sub CopyPaste()
Dim wks As Worksheet
Set wks = ThisWorkbook.Worksheets("Tabelle1")
Workbooks.Open "Vorlage.xlt"
With ActiveWorkbook
 wks.Range("A2:AF4000").Copy Destination:=.Worksheets("Tabelle1").Range("A2")
 .SaveAs "Vorlage" & Format(Date, "yyyymmdd")
 .Close savechanges:=False
End With
End Sub

Gruß
Reinhard

„Ich habe das Gefühl mit „erste Excel Tabelle“ meinst du eine Mappe.
Oder meinst du das erste Tabellenblatt einer Mappe?
Beides bedingt unterschiedliche Modulorte für die Codes.“

Ja es handelt sich um 2 unabhängige Excel Mappen, sorry für die ungenaue Formulierung

„Erstelle die eine Vorlage, also eine Mappe die du als .xlt abspeicherst. Da kannst du ja formatieren, Überschriften eintragen, Tabellenblätter umbenennen/löschen/einfügen und so weiter.“

Tut sich das was ob das jetzt eine .xls oder .xlt Datei ist? Also mit der .xls scheints net zu laufen, da meckert er bei folgender Zeile"

wks.Range(„A2:AF4000“).Copy Destination:=.Worksheets(„Tabelle1“).Range(„A2“)

Was genau ist den in dem Fall Tabelle1?
Die Tabelle aus der kopiert wird oder die Tabelle in die kopiert wird?

Hallo Kev,

„Erstelle die eine Vorlage, also eine Mappe die du als .xlt
abspeicherst. Da kannst du ja formatieren, Überschriften
eintragen, Tabellenblätter umbenennen/löschen/einfügen und so
weiter.“

Tut sich das was ob das jetzt eine .xls oder .xlt Datei ist?

sorry, ich benutze keine xlt-s und kenne nicht alle Feinheiten, so wie ich zu wissen glaube ist schon mal ein Unterschied, wenn du eine Formular.xls als Vorlage öffnest, dort Daten einträgst und dann versehentlich speicherst so ist deine Vorlage „zerschoßen“ weil nun Daten drinstehen.

D.h. beim nächsten Mal muß man die Formular.xls öffnen, dann erstmal diese Daten entfernen um wieder das blanke Formular zu haben. Bei einer xlt kann das nicht passieren, wenn man Formular.xlt öffnet wandelt Excel den namen in Formular.xls, da kann man speichern wie man will, die xlt bleibt erhalten ohne Fremddaten.
Probiere es aus, wenn ich falsch liege habe ich grad Mist erzählt.

Also mit der .xls scheints net zu laufen, da meckert er bei
folgender Zeile"

wks.Range(„A2:AF4000“).Copy
Destination:=.Worksheets(„Tabelle1“).Range(„A2“)

Was genau ist den in dem Fall Tabelle1?
Die Tabelle aus der kopiert wird oder die Tabelle in die
kopiert wird?

Tabelle1 ist das Ziel. Dorthinein wird kopiert.
Die Codezeile für sich sieht okay aus. Entweder ist „wks“ falsch vorher gesetzt worden, oder das Workbook auf das man sich mit dem Punkt vor „Worksheets(„Tabelle1“)“ bezieht hat kein Blatt was Tabelle1 heißt, ist schreibgeschützt oder sonstwas.

Gruß
Reinhard

Sub CopyPasteService()

Dim wks As Worksheet
Set wks = ThisWorkbook.Worksheets(„C:\Projekt\Ungeordnet.xls“)
Workbooks.Open „C:\Projekt\Vorlage.xls“
With ActiveWorkbook
.wks.Range(„A2:AF4000“).Copy Destination:=.Worksheets(„C:\Projekt\Vorlage.xls“).Range(„A2“)
.SaveAs „Vorlage“ & Format(Date, „yyyymmdd“)
.Close savechanges:=False
End With
End Sub

Das is der momentane Code, ich seh da kein Fehler, vllt findst du ihn ja.