Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

per vba neue excelmappe anlegen

Forumthread: per vba neue excelmappe anlegen

per vba neue excelmappe anlegen
21.07.2003 09:48:14
Hans
hi leute,
Gibt es die möglichkeit via VBA eine Neue Datei anzulegen? Ich weiss man kann mappen öffnen und auch schliessen, bla bla bla, aber kann man auch eine neue mappe anlegen? Ich möchte zum beispiel dass wenn ein USER mein programm registriert eine Datei automatisch im Verzeichnis C:\Windows\System32 angelegt wird. Geht das?
Vielen, vielen Dank :)
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: per vba neue excelmappe anlegen
21.07.2003 09:51:29
Bernd Held
Hallo Hans,
meinst Du Workbooks.add
Viele Grüße
Bernd
MVP für Microsoft Excel
Excel-Tipps, VBA-Bücher mit Leseproben(PDF), VBA-Forum und VBA-Schulungen unter: http://held-office.de


Anzeige
AW: per vba neue excelmappe anlegen
21.07.2003 10:11:58
Hans
ja ich glaube schon aber wie leg ich das Verzeichnis und den Dateinamen fest? Und ist es auch möglich die datei auf versteckt oder schreibgeschützt zu setzten, oder sogar durch passwort geschützt?

AW: per vba neue excelmappe anlegen
21.07.2003 10:31:14
Nepumuk
Hallo Hans,
so:

Option Explicit
Public Sub test()
Dim FSyObjekt As Object, FObekt As Object
Application.ScreenUpdating = False
Set FSyObjekt = CreateObject("Scripting.FileSystemObject")
Workbooks.Add
ActiveWorkbook.SaveAs "C:\Windows\System32\Meindateiname.xls", Password:="meinKennwort"
ActiveWorkbook.Close
Set FObekt = FSyObjekt.GetFile("C:\Windows\System32\Meindateiname.xls")
FObekt.Attributes = 3
Application.ScreenUpdating = True
End Sub


Gruß
Nepumuk

Anzeige
AW: per vba neue excelmappe anlegen
21.07.2003 10:18:22
Michael Scheffler
Hi,
genau wie sonst auch: SaveAs.
Gruß
Micha

AW: per vba neue excelmappe anlegen
21.07.2003 10:42:30
Hans
ach, danke, ich versteh jetzt. Bräucht aber nochn tipp. Hab jetzt:
Dim Regbook As Workbook
Set Regbook = Workbooks.Add
Regbook.SaveAs Filename:="test.xls", Password:=registered28, ReadOnlyRecommended:=True
Regbook.Close
Verstehe nicht warum ich zum öffnen der Datei kein Password eingeben muss, wozu dient dann die Passwordzeile in meinem Code? und wie kann ich verhindern dass die nachricht "Wollen sie die Datei ... überschreiben" auftaucht wenn eine Datei gleichen namens vorhanden ist? Und ist es auch möglich die neuangelegte Datei test nur mit einem Tabellenblatt anzulegen?
nochmals danke

Anzeige
AW: per vba neue excelmappe anlegen
21.07.2003 10:52:38
Nepumuk
Hallo Hans,
1.
was steht in der Variablen registered28?
2.
Den Zusatz ReadOnlyRecommended:=True kannst du dir sparen, den lößt beim öffne der Datei nur die Frage aus, ob die Datei schreigeschützt geöffnet werden soll.
3.
Da musst du vorher nachsehen, ob die Datei nicht schon existiert und eventuell mit einem Index versehen.
4.
Vor der Add - Anweisung folgende Zeilen
Dim Anz_tabllen As Byte
Anz_tabelle = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
Workbooks.Add
Application.SheetsInNewWorkbook=Anz_tabllen
Gruß
Nepumuk

Anzeige
AW: per vba neue excelmappe anlegen
21.07.2003 11:13:17
Hans
super, dein Code erledigt genau was ich wollte. Nur noch 3 schnelle Fragen
1) Der Ordner Windows\System32 ist auf jeden Computer vorhanden oder? Wenn nicht welchen ordner würdest du vorschlagen?
2) Wie kann ich jetzt überprüfen ob die erzeugte Datei vorhanden ist (stell mir vor dass könnte schwierig sein weil die Datei versteckt ist?)?
3) Hab in deinem Code .Attributes = 3 gelesen und denke mir dass dies die Datei auf versteckt stellt. Hab leider in der HilfeDatei nichts darüber finden können. Wo könnte ich über diese Eigenschaft näheres erfahren?
Vielen Dank nochmals :)

Anzeige
AW: per vba neue excelmappe anlegen
21.07.2003 12:11:38
Nepumuk
Hallo Hans,
1.
Nein, z.B. auf meinem Rechner (Windows2000pro) nicht.
2.
Versuch es mal so:

Option Explicit
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Sub test()
Dim sSave As String, Ret As Long, index As Long, Dateiname As String
Application.ScreenUpdating = False
Dateiname = "Test"
sSave = Space(255)
Ret = GetSystemDirectory(sSave, 255)
sSave = Left(sSave, Ret) & "\"
Do
If Dir(sSave & Dateiname & ".xls", vbHidden) <> "" Then
index = index + 1
Dateiname = Dateiname & CStr(index)
Else
Exit Do
End If
Loop
Workbooks.Add
ActiveWorkbook.SaveAs sSave & Dateiname & ".xls", Password:="meinKennwort"
ActiveWorkbook.Close
SetAttr sSave & Dateiname & ".xls", vbHidden + vbReadOnly
Application.ScreenUpdating = True
End Sub


3.
Da habe ich jetzt gerade die SetAttr - Anweisung gefunden. Die kommt ohne Objekt aus. Danach kannst du mal in der VBA-Hilfe suchen.
Gruß
Nepumuk

Anzeige
AW: per vba neue excelmappe anlegen
21.07.2003 12:25:11
Nepumuk
Hallo Hans,
die Anzahl der Tabellen habe ich noch vergessen.

Option Explicit
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Sub test()
Dim sSave As String, Ret As Long, index As Long, Dateiname As String, Anz_tabllen As Byte
Application.ScreenUpdating = False
Dateiname = "Test"
sSave = Space(255)
Ret = GetSystemDirectory(sSave, 255)
sSave = Left(sSave, Ret) & "\"
Do
If Dir(sSave & Dateiname & ".xls", vbHidden) <> "" Then
index = index + 1
Dateiname = Dateiname & CStr(index)
Else
Exit Do
End If
Loop
Anz_tabllen = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
Workbooks.Add
Application.SheetsInNewWorkbook = Anz_tabllen
ActiveWorkbook.SaveAs sSave & Dateiname & ".xls", Password:="meinKennwort"
ActiveWorkbook.Close
SetAttr sSave & Dateiname & ".xls", vbHidden + vbReadOnly
Application.ScreenUpdating = True
End Sub


Code eingefügt mit: Excel Code Jeanie
Gruß
Nepumuk

Anzeige
AW: per vba neue excelmappe anlegen
21.07.2003 13:34:12
Hans
wow, du hast mir wirklich sehr weitergeholfen. Ich kann mit deinem Code sogar ".dll" (nach dem aussehen zumindest ;) erzeugen!
Es ist schön zu wissen dass es Profis wie dich gibt, die aus gutem Willen allein unwissenden Anfängern wie mir helfen.
Vielen, vielen Dank

AW: per vba neue excelmappe anlegen
21.07.2003 10:34:44
Franz W.
Hallo Micha,
diese Frage interessiert mich auch. Und ich hätte da bitte auch noch eine Zusatzfrage:
Kann ich per VBA vorher auch noch einen neuen Ordner erstellen? Hab's mit dem Rekorder versucht, aber der hilft da nicht weiter.
Vielen Dank und Grüße
Franz

Anzeige
"MkDir" : hab's gefunden. Danke! o.T.
21.07.2003 10:37:13
Franz W.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Neue Excelmappe per VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine neue Excelmappe per VBA zu erstellen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Option Explicit
    
    Public Sub NeueMappeErstellen()
       Dim Regbook As Workbook
       Set Regbook = Workbooks.Add
       Regbook.SaveAs Filename:="C:\Windows\System32\Meindateiname.xls", Password:="meinKennwort"
       Regbook.Close
    End Sub
  4. Passe den Dateinamen und das Passwort nach deinen Wünschen an.

  5. Führe das Makro aus, um die neue Datei zu erstellen.

Mit diesem Code kannst du ein neues Workbook erstellen und es unter einem bestimmten Verzeichnis speichern.


Häufige Fehler und Lösungen

  • Fehler: „Datei existiert bereits“

    • Lösung: Überprüfe, ob die Datei bereits existiert, bevor du das Workbook speicherst. Du kannst dafür den Dir-Befehl verwenden.
  • Fehler: „Zugriff verweigert“ beim Speichern

    • Lösung: Stelle sicher, dass du die Berechtigung hast, im angegebenen Verzeichnis zu speichern. Möglicherweise solltest du einen anderen Speicherort wählen.
  • Fehler: Passwortschutz funktioniert nicht wie erwartet

    • Lösung: Überprüfe, ob das Passwort korrekt festgelegt wurde. Beachte, dass Excel beim Öffnen der Datei nach dem Passwort fragt.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, um eine neue Excel-Datei zu erstellen:

  1. Über die Benutzeroberfläche:

    • Du kannst manuell eine neue Arbeitsmappe erstellen, indem du auf Datei > Neu > Leere Arbeitsmappe klickst.
  2. Verwendung von MkDir:

    • Um vorher einen neuen Ordner zu erstellen, kannst du den MkDir-Befehl in VBA verwenden:
    MkDir "C:\Windows\System32\NeuerOrdner"
  3. Mit Application.Workbooks.Add:

    • Dies ist eine weitere Möglichkeit, um eine neue Arbeitsmappe zu erstellen. Der folgende Code zeigt, wie es geht:
    Dim wb As Workbook
    Set wb = Application.Workbooks.Add

Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von VBA zum Erstellen neuer Excel-Dateien:

  1. Einfaches Workbook erstellen:

    Sub EinfachesWorkbook()
       Workbooks.Add
    End Sub
  2. Workbook erstellen und benennen:

    Sub WorkbookErstellenUndBenennen()
       Dim wb As Workbook
       Set wb = Workbooks.Add
       wb.SaveAs Filename:="C:\Pfad\zu\deiner\Datei.xlsx"
    End Sub
  3. Workbook erstellen und passwortgeschützt speichern:

    Sub PasswortgeschuetzesWorkbook()
       Dim wb As Workbook
       Set wb = Workbooks.Add
       wb.SaveAs Filename:="C:\Pfad\zu\deiner\Datei.xlsx", Password:="sicheresPasswort"
    End Sub

Tipps für Profis

  • Verwende Application.DisplayAlerts = False: Um die Bestätigungsnachrichten beim Überschreiben von Dateien zu unterdrücken, setze dies vor dem Speichern einer Datei:

    Application.DisplayAlerts = False
  • Versteckte Dateien erstellen: Setze die Attribute der Datei, um sie versteckt zu machen:

    SetAttr "C:\Pfad\zu\deiner\Datei.xls", vbHidden
  • Flexibles Speichern: Verwende Variablen, um den Dateinamen dynamisch zu gestalten, z.B. basierend auf dem Datum oder Benutzerinput.


FAQ: Häufige Fragen

1. Wie kann ich den Speicherort der Datei ändern?
Du kannst den Speicherort im SaveAs-Befehl anpassen. Ändere einfach den Pfad in Filename.

2. Kann ich eine Datei mit nur einem Tabellenblatt erstellen?
Ja, setze vorher die Anzahl der Blätter in einer neuen Arbeitsmappe:

Application.SheetsInNewWorkbook = 1
Workbooks.Add

3. Wie kann ich die Datei nach dem Erstellen automatisch öffnen?
Füge nach dem Close-Befehl den Workbooks.Open-Befehl hinzu:

Workbooks.Open "C:\Pfad\zu\deiner\Datei.xls"

4. Wo finde ich mehr Informationen zu VBA-Befehlen?
Die VBA-Hilfe in Excel bietet umfassende Informationen. Du kannst auch Online-Ressourcen und Foren besuchen, um spezifische Fragen zu klären.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige