Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Workbook.Add Name:= ?

Forumthread: Workbook.Add Name:= ?

Workbook.Add Name:= ?
04.08.2002 01:25:16
Oliver
Hallo,

wie kann ich, wenn ich über VBA mit Workbook.Add eine neue Arbeitsmappe erstelle, dieser einen anderen Namen als den Standardnamen 'MappeX.xls' zuweisen !

DANKE !!

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Workbook.Add Name:= ?
04.08.2002 02:54:27
Charlie
Hallo, Oliver!

Das wird so nicht funktionieren, weil Excel beim Erstellen einer neuen Arbeitsmappe eine schreibgeschützte Kopie der Mustervorlage erstellt.

Benennen kannst Du die neue Arbeitsmappe nur durch bzw. erst beim Speichern. Du kannst aber auch eine "temporäre" Datei erstellen, die Du löscht, wenn Du sie nicht mehr benötigst, z.B.

Viel Erfolg,
Charlie

Anzeige
Re: Workbook.Add Name:= ?
04.08.2002 09:46:42
Harald S
Probiers hiermit:
Sub Mappeneu()
Dim wkb As Workbook
Set wkb = Workbooks.Add
With wkb
.SaveAs "C:\test"
End With
End Sub

mfg
Harald S

Re: Workbook.Add Name:= ?
04.08.2002 14:37:27
Oliver
Erstmal Danke euch beiden !

Dachte der Schreibschutz liesse sich vielleicht umgehen!
Das mit der temporären Datei ist dann wohl die einzige Möglichkeit für mich!
Hab nur noch folgendes Problem:
Wie fange ich das Schliessen-Ereignis von 'Oliver.xls' ab.
Der Benutzer sollte die Möglichkeit haben beim Schliessen der Datei speichern oder nicht (also löschen) wählen zu können!
Das Makro habe ich schon fertig nur den Auslöser hab ich noch nicht hinbekommen! Das Workbook_beforeclose-Ereignis ist ja immer nur für das Workbook in dem der Code steht! Also müsste ich mein Makro per VBA in 'Oliver.xls' schreiben !?

Gruss Oliver

Anzeige
Re: Workbook.Add Name:= ?
04.08.2002 19:43:01
Charlie
Hallo, Oliver!

Ich habe ein Makro geschrieben, das genau das macht:
1. Beim Anlegen der neuen Datei wird diese temp. gespeichert und
2. in das Modul "DieseArbeitsmappe" werden 2 Makros geschrieben.

Eine "Workbook_BeforeClose"-Prozedur, die die erste Zeile dieser Prozedur ausliest und dann die zweite Prozedur aufruft, die den Rest erledigt. Wird die Abfrage nach dem Speichern verneint oder der "Speichern unter"-Dialog mit Abbrechen geschlossen, wird einfach die temp. Datei gekillt. Soll gespeichert werden, wird zuerst die "Workbook_BeforeClose"-Prozedur gelöscht, damit die Abfrage beim nächsten Schließen dieser Datei nicht mehr angezeigt wird. Dann wird die Datei gespeichert und die temporäre Datei gekillt. Diese 2. Prozedur kann sich natürlich nicht selber löschen, weshalb dieses Makro in der gespeicherten Datei erhalten bleibt:

Viel Erfolg,
Charlie

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Arbeitsmappe mit VBA erstellen und benennen


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA eine neue Arbeitsmappe zu erstellen und ihr einen spezifischen Namen zuzuweisen, kannst du das folgende Vorgehen nutzen:

  1. Öffne den VBA-Editor in Excel (ALT + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Kopiere den folgenden Code in das Modul:

    Sub NeueArbeitsmappeErstellen()
       Dim wkb As Workbook
       Set wkb = Workbooks.Add
       ' Speichern der Arbeitsmappe mit einem spezifischen Namen
       wkb.SaveAs "C:\DeinPfad\DeinWorkbookName.xlsx"
    End Sub
  4. Ändere den Pfad und den Namen in der SaveAs-Methode nach deinen Wünschen.

  5. Führe das Makro aus (F5).

Mit diesem einfachen VBA-Befehl kannst du eine neue Arbeitsmappe erstellen und ihr einen spezifischen Namen geben, anstatt den Standardnamen 'MappeX.xls' zu verwenden.


Häufige Fehler und Lösungen

  • Fehler: „Der Pfad ist ungültig“

    • Lösung: Stelle sicher, dass der angegebene Speicherort existiert und die Datei nicht bereits geöffnet ist.
  • Fehler: „Zugriffsverletzung“

    • Lösung: Überprüfe, ob du in dem angegebenen Verzeichnis Schreibrechte hast.
  • Fehler: Arbeitsmappe wird nicht gespeichert

    • Lösung: Stelle sicher, dass du die SaveAs-Methode korrekt verwendest und dass der Speicherort zugänglich ist.

Alternative Methoden

Es gibt mehrere Möglichkeiten, eine neue Arbeitsmappe zu erstellen und ihr einen Namen zu geben:

  1. Direktes Speichern ohne Zwischenschritt:

    Sub DirekteSpeicherung()
       Application.Workbooks.Add
       ActiveWorkbook.SaveAs "C:\DeinPfad\NeuesWorkbook.xlsx"
    End Sub
  2. Temporäre Datei erstellen: Du kannst auch eine temporäre Datei erstellen und sie später umbenennen oder löschen, wie von Charlie im Forum vorgeschlagen.


Praktische Beispiele

Hier sind einige Beispiele, wie du verschiedene Szenarien mit VBA umsetzen kannst:

  • Erstellen eines neuen Arbeitsbuchs mit benanntem Blatt:

    Sub NeuesWorkbookMitBlatt()
       Dim wkb As Workbook
       Set wkb = Workbooks.Add
       wkb.Worksheets(1).Name = "MeinBlatt"
       wkb.SaveAs "C:\DeinPfad\WorkbookMitBlatt.xlsx"
    End Sub
  • Namen von Arbeitsmappen dynamisch festlegen:

    Sub DynamischeNamen()
       Dim wkb As Workbook
       Dim wbName As String
       wbName = "Workbook_" & Format(Now, "YYYYMMDD_HHMM") ' Datumsformat für eindeutigen Namen
       Set wkb = Workbooks.Add
       wkb.SaveAs "C:\DeinPfad\" & wbName & ".xlsx"
    End Sub

Tipps für Profis

  • Verwende die Workbook_BeforeClose-Ereignisprozedur, um das Schließen von Arbeitsmappen zu steuern.

  • Nutze Fehlerbehandlungsroutinen, um deine Makros robuster zu gestalten. Zum Beispiel:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
       MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • Denke daran, dass bei der Verwendung von workbooks.add nur eine temporäre Arbeitsmappe erstellt wird, die du speichern musst, um sie später wieder verwenden zu können.


FAQ: Häufige Fragen

1. Kann ich die Arbeitsmappe sofort beim Erstellen benennen? Nein, die Arbeitsmappe erhält zunächst einen Standardnamen. Du kannst sie jedoch sofort nach dem Erstellen über SaveAs umbenennen.

2. Wie kann ich sicherstellen, dass der Benutzer beim Schließen wählen kann, ob die Datei gespeichert werden soll? Du kannst ein Workbook_BeforeClose-Ereignis erstellen, das den Benutzer fragt, ob er speichern möchte, und dann entsprechend handelt.

3. Ist es möglich, eine Arbeitsmappe in einem bestimmten Format zu speichern? Ja, du kannst das Format in der SaveAs-Methode angeben, z.B. .xlsm für eine Arbeitsmappe mit Makros.

4. Wie kann ich eine Arbeitsmappe ohne Benutzerinteraktion speichern? Verwende einfach wkb.Save anstelle von wkb.SaveAs, wenn die Arbeitsmappe bereits einen Namen hat.

5. Kann ich mehrere Arbeitsmappen gleichzeitig erstellen? Ja, du kannst in einer Schleife mehrere workbooks.add-Befehle ausführen, um mehrere Arbeitsmappen zu erstellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige