Macro um neues Workbook zu oeffnen

Hallo liebe Spezialisten,
ich habe ein Spreadsheet mit vielen Formeln, zwei Macros mit einer Groesse von 240kb. Das wird benutzt um Quoten auszurechnen und ist als Template gespeichert. Wenn mein Kollege nun jeden Tag 10 Quoten schreibt und das dann speichert ist die HD ziemlich bald voll, da alles ja jedesmal neu gespeichert wird. Nun dachte ich, ich koennte ein Macro schreiben das einfach per Knopfdruck:

  • Ein neues Workbook oeffnet
  • Sheet 1 im Template kopiert
  • das dann in Sheet 1 des neuen Workbook hineinkopiert (nur Values und Format)
    und das ganze nochmal mit Sheet 2 (kopieren, paste mit values und Format).
    Somit ist die neue Datei nur ein zehntel gross.
    Hat da jemand ein wenig Zeit mir ein wenig Hilfestellung zu leisten?
    Dankbare Gruesse
    euer Ingo
    P.S: Bin natuerlich auch fuer andere Tipps und Ratschlaege offen :smile:

Hi Ingo,

den grössten Teil davon kannst Du selbst mit dem Makro-Recorder aufzeichnen.
Alles, was das kopieren der Werte betrifft - das einzige, was man im VBA code dann noch ändern muss ist der code für das umbenennen des neu eingefügten Worksheets auf einen Sinnvollen Namen.

Gehe erst mal wie folgt vor:

  1. Starte den Makro-Recorder (von einem beliebigen anderen Sheet aus)
  2. Wechsle in das Sheet mit den Berechnungen
  3. (falls nötig) initiiere die neuberechnung
  4. kopiere alles, was Du kopiert haben willst.
  5. erstelle ein neues Sheet
  6. Füge alles ein (incl Formeln!) - das ist der leichteste Weg um die Formatierungen zu übernehmen
  7. Füge nochmal die Werte ein ( Bearbeiten - Inhalte einfügen… - Werte )
  8. benenne das aktive sheet um.
  9. stoppe den Makro - recorder
  10. schau dir den code an und poste ihn hier nochmal…

danach helfe ich Dir weiter…

Hi Ingo,

Hallo munich,
erstmal vielen Dank fuer die Zeit die Du dir nimmst…

den grössten Teil davon kannst Du selbst mit dem
Makro-Recorder aufzeichnen.
Alles, was das kopieren der Werte betrifft - das einzige, was
man im VBA code dann noch ändern muss ist der code für das
umbenennen des neu eingefügten Worksheets auf einen Sinnvollen
Namen.
Gehe erst mal wie folgt vor:

  1. Starte den Makro-Recorder (von einem beliebigen anderen
    Sheet aus)
  2. Wechsle in das Sheet mit den Berechnungen
  3. (falls nötig) initiiere die neuberechnung
  4. kopiere alles, was Du kopiert haben willst.
  5. erstelle ein neues Sheet
  6. Füge alles ein (incl Formeln!) - das ist der leichteste Weg
    um die Formatierungen zu übernehmen
  7. Füge nochmal die Werte ein ( Bearbeiten - Inhalte
    einfügen… - Werte )
  8. benenne das aktive sheet um.
  9. stoppe den Makro - recorder
  10. schau dir den code an und poste ihn hier nochmal…

Workbooks.Add
Windows(„BlaBla.xls“).Activate
Sheets(„Entry“).Select
Selection.Copy
Windows(„Book1“).Activate
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets.Add
Windows(„BlaBla.xls“).Activate
Sheets(„Quote Output“).Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Windows(„Book1“).Activate
Cells.Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„A1“).Select

danach helfe ich Dir weiter…

das ist das was dabei rauskommt.
Ich wollte dannach noch folgendes Macro einbauen womit ich das sheet speichern will:
Private Sub CommandButton1_Click()
Dim ck As Boolean
If newName = „“ Then
str1 = Range(„A2“)
Else
str1 = newName
End If
ck = Application.Dialogs(xlDialogSaveAs).Show(str1)
If ck = True Then
newName = ActiveWorkbook.Name
End If
End Sub
klappt sehr gut hab ich mal im Netz gefunden. Damit kann ich gleich vorgeben als was ich die Datei speichern will.
Liebe Gruesse
Ingo

Sorry - entweder hab ich Dich falsch verstanden oder Du hast Dich falsch ausgedrückt…

Beschreib nochmal mit neuen Worten und komplett in Deutsch

Datei = eine Excel Datei
Blatt = ein Tabellenblatt / Sheet

ohne Workbook und Worksheet und erst recht nicht mit Spread~

Allerdings kann ich Dir nicht mal eben schnell helfen - meine Zeit ist im Moment knapp bemessen!

Gruß
Munich

Sorry - entweder hab ich Dich falsch verstanden oder Du hast
Dich falsch ausgedrückt…

Entschuldige, aber ich lebe nunmal nicht in Deutschland

Beschreib nochmal mit neuen Worten und komplett in Deutsch

Datei = eine Excel Datei
Blatt = ein Tabellenblatt / Sheet

ohne Workbook und Worksheet und erst recht nicht mit Spread~

Allerdings kann ich Dir nicht mal eben schnell helfen - meine
Zeit ist im Moment knapp bemessen!

Gruß
Munich

ich habe eine Tabelle mit vielen Formeln, zwei Macros mit einer Groesse von 240kb. Das wird benutzt um Quoten auszurechnen und ist als Template gespeichert. Wenn mein Kollege nun jeden Tag 10 Quoten schreibt und das dann speichert ist die Festplatte ziemlich bald voll, da alles ja jedesmal neu gespeichert wird. Nun dachte ich, ich koennte ein Macro schreiben das einfach per Knopfdruck:

  • Eine neue Tabelle oeffnet

  • Blatt 1 im Template kopiert

  • das dann in Blatt 1 der neuen Tabelle hineinkopiert (nur Werte und Format)
    und das ganze nochmal mit Blatt 2 (kopieren, paste mit Werten und Format).
    Somit ist die neue Datei nur ein zehntel gross.
    Hat da jemand ein wenig Zeit mir ein wenig Hilfestellung zu leisten?
    Dankbare Gruesse

Und hier mein Macro:

_Workbooks.Add
Windows(„BlaBla.xls“).Activate
Sheets(„Entry“).Select
Selection.Copy
Windows(„Book1“).Activate
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

=False, Transpose:=False

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets.Add
Windows(„BlaBla.xls“).Activate
Sheets(„Quote Output“).Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Windows(„Book1“).Activate
Cells.Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range(„A1“).Select_

Ausserdem noch dieses zum speichern:
Ich wollte dannach noch folgendes Macro einbauen womit ich das sheet speichern will:

Private Sub CommandButton1_Click()
Dim ck As Boolean
If newName = „“ Then
str1 = Range(„A2“)
Else
str1 = newName
End If
ck = Application.Dialogs(xlDialogSaveAs).Show(str1)
If ck = True Then
newName = ActiveWorkbook.Name
End If
End Sub