wie benennt man die ganze excel datei nach inahlt der zelle?

so siehts aus - (Name, Datei, Zellen)

2 Antworten

Damit Ninombre die HA bekommen kann, hier noch eine schlechtere Variante:

  • Mit Strg + F11 ein neues Tabellenblatt anlegen
  • A1: =KOPIE.SPEICHERN.UNTER(Pfad&TEXT('Speichern per Makro'!A3;"JJJJ-MM-DD")&'Speichern per Makro'!B3&'Speichern per Makro'!C3&".xlsm")
    A2: =RÜCKSPRUNG()
  • Erklärung: Auf dem Blatt "Speichern per Makro" steht im benamten Bereich "Pfad" der Pfad zum Windowsordner, in dem die Kopien landen sollen. In A3:C3 stehen die in der Frage geforderten Werte.
  • Das Makro kann ausgeführt werden, indem auf dem neu eingefügten Tabellenblatt auf A1 geklickt wird, dann Entwicklertools → Makros → Makroname: A1 → Ausführen oder man legt sich dafür eine Schaltfläche auf das Tabellenblatt und weist das Makro zu.
  • Auch hierbei sollte die Endung xlsm verwendet werden.
Ninombre  15.11.2016, 13:13

hmm vielleicht ist der Ansatz nicht verkehrt, den Inhalt per Makro in eine neue Datei zu kopieren und diese dann zu speichern. Ich bekomme sonst den Widerspruch nicht aufgelöst:

1. Von der Bedienung her sollte die Vorlage immer offen sein und die Kopien abgespeichert werden ohne, dass man die Vorlage verlassen oder neu öffnen muss.

2. Mit savecopyas bekommt man eine kaputte Datei, wenn die Endung nicht identisch ist.

3. Ich finde es aber auch nicht sinnvoll, wenn die erzeugten Kopien ein Makro enthalten, dass bei jedem Speichern aufgerufen wird. Man könnte natürlich abfragen, ob der Dateiname ggü. der Vorlage verändert wurde (dann eben keinen neuen Namen genrieren), aber trotzdem: Der Chef hat keine Verwendung für die Makros und muss mit xlsm arbeiten.

Es sollte also eine Datei mit Makros sein als Vorlage und die erzeugten Dateien ohne Makro. Das bekomme ich nur mit einem anderen Ansatz hin. Idee wieder: Die Vorlage bekommt einen Button, mit dem Du das Makro startest. Der Button sollte unterhalb des Eingabebereichs sein, denn ich hab im Screenshot gesehen, dass die Zeilenhöhe speziell angepasst ist. Das wird beim normalen Kopieren leider nicht übernommen. Mit PasteSpecial kann man das vermutlich auch irgendwie zurechtbiegen, einfacher ist es einfach die ganzen Zeilen zu kopieren. Damit der Button nicht versehentlich mitkommt, diesen eben unter den relevanten Bereich packen.

sub dateierzeugen()
Dim dateiname As String
dateiname = Range("A3").Value & Range("B3").Value & Range("C3").Value & ".xlsx"
Rows("1:5").Copy
Workbooks.Add
ActiveSheet.Paste
ActiveWorkbook.SaveAs Filename:="C:\Users\xv14869\Desktop\" & dateiname, _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
end sub
1

Soll die komplette Datei umbenannt werden oder ist ein Tabellenblatt gemeint?

Die Datei umbennen geht nicht direkt, denn die Datei ist ja geöffnet. Man kann eine Kopie mit einem Namen nach Wunsch speichern. Dann wäre die Datei mit dem Makro quasi eine Vorlage.

Wenn Du Visual Basis offen hast, kannst Du dieses Makro einfügen (zum Tabellenblatt, auf dem auch die Eingaben gemacht werden).

Sub Dateispeichern()
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\Users\hugo\Desktop\" & Range("a3") & Range("b3") & Range("c3") & ".xlsx"
Application.DisplayAlerts = True
End Sub

Um das Makro zu starten kannst Du unter Entwicklerwerkzeuge > Einfügen einen Button auf die Tabelle packen und diesem Button das Makro zuweisen.

Suboptimierer  15.11.2016, 10:38

DH! Das ist das Simpelste.

Ein paar kleine Hinweise: 

  • Den Code in das Ereignis Workbook_Save packen oder die Funktion in Workbook_Save aufrufen. Dann wird direkt beim Speichern automatisch eine Kopie unter dem konstruierten Namen erstellt.
    Dabei muss darauf geachtet werden, die Ereignisse zu deaktivieren und nach dem Speichern wieder zu aktivieren mit Application.EnableEvents = False / True, idealerweise in Verbindung mit On Error Handling
  • Mit ActiveWorkbook.SaveCopyAs kann man in der Originaldatei weiterarbeiten und arbeitet nicht auf der Kopie.
  • Als Dateiname würde ich direkt die Endung xlsm verwenden (In meinem Tests machte es Probleme, eine xlsm als xlsx zu speichern).
0
Ninombre  15.11.2016, 10:46
@Suboptimierer

Die Hinweise sind natürlich wichtig:
@ichbinunwissend, Du müsstest klären, ob es notwendig ist, dass das Makro auch in der Kopie steht oder bewusst eine blanke Datei entstehen soll.

0
ichbinunwissend 
Fragesteller
 15.11.2016, 12:36

also auf dem desktop ist jetzt eine vorlage, ich nehme an, mit makros. diese soll jedes mal, wenn einer anruft von mir aufgemacht werden und dann der inhalt eingegeben werden und dann soll sie gespeichert werden unter dem namen, bzw inhalt der in den zellen steht als mappe, die mein chef dann bei sich öffnet.

0
Ninombre  15.11.2016, 13:14
@ichbinunwissend

wenn Du nur gelegentlich die Datei öffnen und eine Kopie anlegen musst, reicht vermutlich das Makro aus, das ich genannt habe. Einen anderen Ansatz hab ich in den Kommentar zu suboptimierers Antwort geschrieben.

0
ichbinunwissend 
Fragesteller
 01.12.2016, 16:38
@Ninombre

Hallo noch mal! Also, ich habe das eingefügt:

Sub Dateispeichern()
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\Users\RILA\Desktop\" & Range("a3") & Range("b3") & Range("c3") & ".xlsx"
Application.DisplayAlerts = True
End Sub

dann will ich ja die datei abspeichern, nachdem ich in diese Zellen was eingetragen habe. aber, dann sagt er mir:

Laufzeitfehler '1004'

Diese Erweiterung kann nicht mit dem ausgewählten Dateityp verwendet werden. Ändern Sie die Dateierweiterungen im Textfeld 'Dateiname', oder wählen Sie einen anderen Dateityp aus, indem Sie die Asuwahl unter 'Speichern unter' ändern.

Da ich ja wie schon geschrieben, leider so gar nichts von "so was" verstehe und eigentlich auch keine Ahnung von so was habe, bräuchte ich auch da Hilfe....

was soll ich machen, bzw was mache ich falsch?

ich habe jetzt auch schon eine Schatfläche neben meiner Tabelle für die Aufzeichnung des Makros, wenn ich drauf klicke, kommt die selbe Fehlermeldung.

0
ichbinunwissend 
Fragesteller
 01.12.2016, 16:44
@Ninombre

und wie gesagt: ich bräuchte eine Vorlage in Excel, die auf dem Desktop gespeichert und leer ist. Da will ich was eintragen, auf Speichern klicken und dass so mit eine neue Excel Tabelle -mit dem Zellinhalt als Dateiname- erstellt wird (wo man auch nicht unbedingt die Makros zu aktivieren braucht).

0
Ninombre  01.12.2016, 20:38
@ichbinunwissend

Probier mal so

Sub speichern()
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\Users\RILA\Desktop\" & Range("A3") & Range("B3") & Range("C3") & "xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True
End Sub

0
ReinerR21  27.02.2017, 15:52
@Ninombre

Hallo,

ich habe das eben versucht für mein Dokument zu verwenden, es wird allerdings nur xlsx als Dokumentenname verwendet. Ich kenne mich in VB nicht allzugut aus. Hier mein verwendeter Code:

Sub speichern()
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="\\SERVER2011SBS\RedirectedFolders\R.Reiner\Desktop\GFT Reparatur\" & Range("A18") & Range("B19") & "xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True
End Sub

Das ganze habe ich auf einen Button gelegt so das das beim Speichern ausgelöst wird. Wie gesagt er übernimmt nur xlsx als Name. (Ich verwende Excel 2016, falls das eine Rolle spielt.)

0