Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1772to1776
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Speichern einer Arbeitsmappe

Speichern einer Arbeitsmappe
04.08.2020 10:55:57
Martin
Hallo zusammen,
ach auf die Gefahr hin, dass diese Frage schon mal irgendwie gestellt worden ist und ich die einfach nicht gefunden habe, möchte ich diese hier noch mal Stellen. Ich habe eine Exceldatei, die nach meinen vorgaben befüllt wird, das funktioniert auch sehr gut. Nun möchte ich diese Datei nach meinen Vorgaben unter einem bestimmten Namen speichern.
Derzeit mache ich das unter ActiveWorkbook.SaveAs Filename:=Pfad + CStr(a(0)) + "_en.xlsx",
Hier ist allerdings der Name meiner Arbeitsmappe, die bislang als Vorgabe diente verloren, und ich kann sie nicht mehr ansprechen. Ich könnte natürlich diese Mappe dann als Vorlage verwenden und so einen Workaround gestalten, ist aber eher umständlich denke ich.
Mir schwebt so etwas vor wie ich nehme die Vorlage, schreibe rein was ich möchte und speichere die unter einem neuen Namen ab, währen die Vorlage im Speicher gehalten wird. Nachdem ich die Abschrift der gefüllten Mappe vorgenommen habe, lösche ich alle Einträge und beschreibe diese neu. Die Lösung die ich jetzt habe, erfordert schließen der abgeschrieben Datei und neuöffnen der Vorlage, und das ist zeitintensiv.
Userbild

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern einer Arbeitsmappe
04.08.2020 19:55:22
fcs
Hallo Martin,
so wie ich es verstehe, ist deine Vorlage eine Excel-Datei mit Makros.
Speichern möchtest du die Datei mit anderem Namen aber als Datei ohne Makros.
Deshalb muss man einen kleinen Umweg gehen, damit die Vorlage geöffnet bleibt mit unverändertem Namen.
LG
Franz
Sub DateiSaveAs()
'Datei-Kopie mit Makros speichern, öffnen, und ohne Makros speichern
Dim wkbAktiv As Workbook, wkbSave As Workbook
Dim strDateiname As String, strExt As String
'testdaten
Dim Pfad As String
Dim a(0 To 1)
a(0) = 3
Pfad = "C:\users\public\Test\"
strDateiname = Pfad + CStr(a(0)) & "_en."
Set wkbAktiv = ActiveWorkbook
'Namenserweiterung der aktiven Datei ermitteln
strExt = Mid(wkbAktiv.Name, InStrRev(wkbAktiv.Name, ".") + 1)
'Kopie der Datei unter neuem Namen speichern
wkbAktiv.SaveCopyAs strDateiname & strExt
'Kopie öffnen
Set wkbSave = Application.Workbooks.Open(strDateiname & "xlsm", ReadOnly:=True)
'Kopie ohne Makros speichern
Application.DisplayAlerts = False
wkbSave.SaveAs Filename:=strDateiname & "xlsx", FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True
'Kopie mit Makros wieder löschen
wkbSave.Close savechanges:=False
VBA.Kill strDateiname & strExt
wkbAktiv.Activate
End Sub

Anzeige
AW: Speichern einer Arbeitsmappe
05.08.2020 10:58:47
Martin
Hallo Franz,
Danke erst mal für die Hilfe, die ich nur durch Zufall entdeckt habe. Eigentlich dachte ich, dass ich "bei Antwort per E-Mail informieren" gehakt hätte.
Ich habe den QC von Dir mal kurz überflogen aber noch nicht getestet. Das ist natürlich eine Möglichkeit mit der Umbenennung. Aber ich habe auch eine Lücke in meiner Beschreibung gefunden, wenn man so in der Materie drin, steckt, dann setzt man leicht Gedanklich einiges voraus, was das Gegenüber eben nicht erahnen kann.
Also ich habe eine XLSM, da steht alles drin was Excel machen soll:
- nehme die Daten aus der XLSM und lade sie
- öffne eine Datei Formular und schreibe einen Teil der Daten da hinein
- speichere dieses Formular als pdf
- Lösche alle geschrieben Daten wieder daraus für den nächsten Durchgang
- Nehme einen anderen Teil der Daten und schreibe die in zwei andere und ähnliche Dateien (eine deutsch, eine englisch)
Eben jene Dateien sind keine xlsm Dateien sondern nur xlsx. Sie werden dann nur noch unter neuem Namen gespeichert und gegen versehentlichen Falschbeschreiben geschützt. Durch das Speichern verlieren sie den Vorlagenamen und können nicht mehr angesprochen werden. Ich schließe sie dann und mache die Vorlage neu auf, was eben etwas zeitintensiv ist. Heute morgen hatte ich 699 Dateien in 30 min erzeugt.. das ist mir etwas zu lange. Weil Excel immer läd und prüft innerhalb der Startroutine.
Vielleicht kann man ja auch so ein "schreiben ohne öffnen machen". Das Kopieren und Umbenennen der Vorlagen ginge ja rasend schnell. Wenn man dann die umbenannte Datei einfach nur mit neuen Inhalten beschreiben würde ; ganz im Stil "auslesen ohne öffnen" aber eben aus der anderen Richtung...
Anzeige
AW: Speichern einer Arbeitsmappe
05.08.2020 18:04:32
fcs
Hallo Martin,
wenn die Formular-Vorlagen als xlsx-Dateien vorliegen, dann kannst du das ausgefüllte Formular mit SaveCopyAs speichern.
ActiveWorkbook.SaveCopyAs Filename:=Pfad + CStr(a(0)) + "_en.xlsx"
Falls notwendig musst du vor dem Eintragen der Daten des nächsten Datensatzes die Inhalte der Eingabefelder löschen.
Noch ein Hinweis: verwende das Zeichen & statt + wenn du Texte vekettest.
Es gibt Grenzfälle bei denen die Aktion mit + schief geht.
LG
Franz
AW: Speichern einer Arbeitsmappe
06.08.2020 20:43:48
Martin
Hallo Franz,
Danke, Danke, Danke! ich habe jetzt ewig gesucht wie ich hier antworten kann. Endlich! Also ich habe es probiert und es macht genau das was es soll. Das kleine Zauberwort ist ActiveWorkbook.SaveCopyAs Filename:=Pfad + CStr(a(0)) + "_en.xlsx".
Ich war ja so nah dran, aber eben doch daneben. Danke auch für den Hinweis mit dem & und + ich las bereits darüber. Ich verwende es immer intuitiv, meistens aber +. In den Excelformeln ist ja meines Wissens immer & gefragt also A2&B5... ich weiß leider auch nicht so genau was der Unterschied war und wie sich der Fehler bemerkbar macht...
Aber trotzdem Danke, Problem gelöst.
Anzeige
AW: + oder & beim Verketten von Werten
07.08.2020 13:41:59
Werten
Hallo Martin,
ganz einfach:
+ ist das Zeichen für eine Addition von nummerischen Werten
& ist das Zeichen für das Verketten/Zusammenfügen beliebigen Werten
Die Programmierer von Microsoft haben für VBA irgendwann eine Erleichterung(?) im Compiler eingebaut, sodass eine Erkennung des Variablentyps erfolgt und das + Zeichen zuzusagen intern in ein & umgewandelt wird, wenn Strings die Parameter sind.
Aber wie schon erwähnt, es gibt die Grenzfälle, bei denen ein unerwünschtes Ergebnis herauskommen kann, wenn man + verwendet.
LG
Franz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige