Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
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

xlsm per Makro als xls abspeichern und dabei alle Makros entfernen

xlsm per Makro als xls abspeichern und dabei alle Makros entfernen
17.12.2019 10:48:38
Tobias
Hallo,
ich suche eine Möglichkeit, mittels eines Makros folgenden Speichervorgang auszulösen:
· es wird der Speicherort abgefragt und ein Pfad bereits vorgelegt: "D:\Projekte"
· der Dateiname wird aus Zelle A2 des aktiven Tabellenblatts und dem Namen des Tabellenblatts erzeugt – in etwa: .Range("A2").Value & "_" & ActiveSheet.Name & ".xls"
· alle vorhandenen Makros (insgesamt 7 Stück) werden gelöscht
· die Datei wird als xls abgespeichert
Rumprobiert habe ich schon mit Abspeichern als xls (in der Hoffnung, dass dann die Makros automatisch verschwinden), dann kommt beim Öffnen aber die Fehlermeldung, dass Dateiformat und Dateierweiterung nicht zusammenpassen und die Makros sind auch noch da.
Danke und Grüße,
Tobias

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: xlsm per Makro als xls abspeichern und dabei alle Makros entfernen
17.12.2019 10:51:38
Hajo_Zi
Halo Tobias,
benutze den Makrorecorder.

AW: xlsm per Makro als xls abspeichern und dabei alle Makros entfernen
17.12.2019 11:01:27
peterk
Hallo
Mit diesem kleine Makro speicherst Du Deine Datei als Kopie in XLS (Makros werde automatisch entfernt)

Option Explicit
Sub Sa()
ActiveWorkbook.Sheets.Copy  ' ein neues Workbook wird erzeugt und ist sofort aktiv
ActiveWorkbook.SaveAs Filename:="C:\Users\...\SaveCopyAs.xlsx", FileFormat:=51
ActiveWorkbook.Close
End Sub

DAS ist...
17.12.2019 11:12:15
Oberschlumpf
Hi,
...natürlich noch einfacher!
Aber....die Kopie als xlsX speichern, NICHT als XLS!
Ciao
Thorsten
Anzeige
AW: DAS ist...
17.12.2019 12:02:27
Oberschlumpf
Hi,
ich bezog meinen Hinweis auf deinen Text nach dem Hallo:
Mit diesem kleine Makro speicherst Du Deine Datei als Kopie in XLS (Makros werde automatisch entfernt)
Wenn im 1. Speichervorgang als xls gespeichert wird, bleiben die Makros erhalten.
in deinem Code-Bsp steht zwar xlsx, aber eben in deinem Erklär-Text steht nur XLS.
Nur darauf hatte ich hingewiesen
So ein Erklär-Wirrwar muss nicht unbedingt hilfreich sein.
Anzeige
AW: DAS ist...
18.12.2019 10:25:32
Tobias
Hallo,
erstmal 1000 x sorry, das mit xls und xlsx war unüberlegt von mir, ich meinte nur xlsx ... Hauptsache, die Makros sind weg :-/
Vermutlich habe ich für diesen Thread jetzt eh zu lange gebraucht ... aber anhand meines bisherigen Makros und den vorgeschlagenen Ansätzen, habe ich jetzt das hier zusammengebastelt – von der Struktur her:
die Schritte um Makro:
Schritt 1) die xlsm-Datei wird zuerst gespeichert (etwaige manuelle Änderungen vor dem Ausführen des Makros also gesichert)
Schritt 2) ... (diverse Befehel zum Löschen von Tabellenblättern, formatieren von Tabellen, etc.)

Schritt 3)
es wird eine Kopie der Datei erstellt
Schritt 4) für diese Kopie wird eine Aufforderung zum Speichern als xlsx-Datei generiert. Es wird dabei bereits ein Pfad vorgeschlagen und der Dateiname wird automatisch erzeugt
Schritt 5) die so abgespeicherte xlsx-Datei bleibt offen. Die xlsm-Datei wird geschlossen und zwar mit dem zu Beginn des Makros gesicherten Standes, eine Warnung zum Abspeichern der Änderungen müsste also unterdrückt werden
die Makro-Elemente dafür, soweit ich sie zusammenhabe:
Schritt 1)

ActiveWorkbook.Save
Schritt 2) [...] diverse Befehel zum Löschen von Tabellenblättern, formatieren von Tabellen, etc.
Schritt 3)
ActiveWorkbook.Sheets.Copy
Schritt 4)
Dim Ordner
Dim strPath As String
Dim FN As String
Dim fDialog
Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
With fDialog
.Title = "Bitte das entsprechende Unterverzeichnis auswählen!"
.InitialFileName = "D:\Projekte\Auswertungen"
If .Show = -1 Then
For Each Ordner In .SelectedItems
strPath = Ordner
Next
Else
Exit Sub
End If
End With
With ActiveSheet
FN = .Range("A2").Value & "_Änderungen.xlsx"
End With
If Right(strPath, 1) "\" Then strPath = strPath & "\"
ActiveWorkbook.SaveAs Filename:=strPath & FN
Schritt 5)
ThisWorkbook.Close savechanges:=False
Es funktioniert nun alles, bis auf Schritt 4), die automatische Namenserzeugung. Hier soll eigentlich der Name des (übriggebliebenen - alle anderen werden gelöscht) Tabellenblattes integriert werden. Der Name besteht dann aus Inhalt der Zelle A2, Unterstrich und dem Namen des Tabellenblatts/-reiters: [Inhalt Zelle A2]_[Name Tabellenblatt].xlsx
Ich habe an der Zeile
FN = .Range("A2").Value & "_Änderungen.xlsx"
mit ActiveSheet.Name herumprobiert aber es funktioniert nicht ...
Falls hier noch jemand eine Idee hat, wäre das super!
Danke,
Tobias
Anzeige
AW: DAS ist...
18.12.2019 10:49:04
Werni
Hallo Tobias
Warum Tabellen löschen und anschliessend Copy?
Du kannst die Blätter die du brauchst selektieren und anschliessend Verschieben\kopieren
Bsp:
Sheets(Array("Tabelle1", "Tabelle3", "Tabelle5", "Tabelle7")).Copy

Damit bleibt die *.xlsm bestehen.
Für deine weiter Frage hab ich bisher noch keine Antwort.
Gruss Werni
AW: DAS ist...
18.12.2019 10:55:51
Tobias
Hallo,
habe es hinbekommen:
FN = .Range("A2").Value & "_" & ActiveSheet.Name & ".xlsx"
Danke an alle nochmal!
Tobiads
AW: xlsm per Makro als xls abspeichern und dabei alle Makros entfernen
17.12.2019 11:03:01
Werni
Hallo Tobias
Warum denn unbedingt als *.xls ?
Dann speichere die Datei als *.xlsx oder *.pdf
Gruss Werni
Anzeige
AW: xlsm per Makro als xls abspeichern und dabei alle Makros entfernen
17.12.2019 11:03:29
Daniel
Hi
wenn du in einem anderen Format speichern willst, reicht es nicht, die Dateierweiterung im Dateinamen zu ändern. Du musst dann schon beim SaveAs den Parameter FileFormat richtig einstellen.
beim Dateinamen solltest du die Dateierweiterung sogar weglassen, denn dann wird diese passend zum verwendeten Format automatisch ergänzt.
allerdings enthalten die alten xls-Formate ebenfalls Makros, denn xls entspricht dem neuen xlsb.
nur im xlsx-Format verschwinden die Makros.
Beachte weiterhin, dass das löschen der Makros nur in der auf dem Verzeichnis gespeicherten Version passiert und nicht in der Datei im Hauptspeicher. Diese behält weiterhin die Makros.
um die Makros verschwinden zu lassen, müsstest du so vorgehen:
- Datei als xlsx-Datei speichern
- Datei schließen
- xlsx-Datei öffnen
- xlsx-Datei als xls-Datei speichern
- xlsx-Datei löschen
Gruß Daniel
Gruß Daniel
Anzeige
AW: xlsm per Makro als xls abspeichern und dabei alle Makros entfernen
17.12.2019 11:04:01
Oberschlumpf
Hi Tobias,
die einfachste Variante (mit meinem Wissen! ;-) ) ist das hier:
1. erstell eine neue Datei, ich nenne sie mal XXX, die NUR das Makro enthält, mit dem du aus deiner Datei mit Makro eine Datei ohne Makro machst. Deine Datei nenne ich mitMakro
2. in XXX wird per Makro zuerst wieder eine neue Datei erstellt. Diese Datei nenne ich mal ohneMakro
3. So, nun werden nacheinander nur die Daten (Werte) aus allen Tabellenblätter aus mitMakro kopiert und in ein jeweils eigenes Tabellenblatt in ohneMakro eingefügt. Alle Werte mit allen Formaten mit allen Formeln, aber alles ohne Makros!
4. Jetzt noch die Datei ohneMakro irgendwo speichern - fertig
Und erst ab jetzt wird HaJo's Vorschlag hilfreich!
Die Schritte 1 - 4 kannst du wirklich mit dem Makrorecorder durchführen.
Hilft mein Ansatz?
(wenns beim 1. Versuch nicht klappt, probier es immer und immer wieder...Fahrradfahren konntest du auch nicht gleich beim 1. Mal, oder?! :-) )
Ciao
Thorsten
Anzeige
AW: xlsm per Makro als xls abspeichern und dabei alle Makros entfernen
17.12.2019 11:12:45
Piet
Hallo Tobias
du findest im Internet in mehreren Foren, auch bei Herbers, Makros zum "Löschen von Modulen"!
Ich habe mal einige runtergeladen, aber nich alle funktionieren. Einfach mal schauen was klappt.
https://www.herber.de/bbs/user/133828.xlsm
mfg Piet
AW: xlsm per Makro als xls abspeichern und dabei alle Makros entfernen
17.12.2019 11:22:59
Tobias
Also erstmal danke an alle für die Hinweise! Da bin ich eine Weile beschäftigt ...
(der Vorschlag von perterk funktioniert schonmal, allerdings halt ohne die Aufforderung, den Speicherort auszuwählen und ohne die automatische dynamische Namensvergabe)
Viele Grüße,
Tobias
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige