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

Forumthread: xlsm als xlsx speichern VBA

xlsm als xlsx speichern VBA
20.04.2019 16:02:59
Tobi
Hallo Zusammen,
diese Woche hat mir Alexandra freundlicherweise geholfen und mir den Code mitgeteilt, mit dem man eine UserForm beim schließen in eine xlsx abspeichern kann.
Der Code funktioniert zwar, allerdings erscheint jetzt auch eine Speicherabfrage, wenn ich von der UserForm 1 mit dem Commandbutton (Liste) auf die UserForm 2 wechsle und auch wenn ich dann wieder zurück auf die UserForm 1 gehe.
Eventuell liegt es daran, dass ich die UserForm 1 mit "Unload Me" schließe und nicht mit UserForm1.Hide. Denn bei UserForm1.Hide erscheint diese Abfrage nicht.
Leider kann ich die UserForm1 nicht mit "Hide" verstecken, weil dann die ListBox in UserForm 1 nicht mit sortiert wird.
Gibt es eine Lösung?
Der Code zum Abspeichern als xlsx:
Private Sub UserForm_Terminate()
Dim sichdatei As String
Dim pfad As String
Sheets("Tabelle1").Copy
sichdatei = "Sicherungskopie_Datenbank.xlsx"
pfad = ThisWorkbook.Path
ActiveWorkbook.SaveAs pfad & "\" & sichdatei
ActiveWorkbook.Close savechanges:=True
End Sub
Die xlsm-Datei unten angehängt.
Ich danke vielmals, falls jemand sich der Sache annimmt.
Liebe Grüße Tobi
https://www.herber.de/bbs/user/129288.xlsm
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: xlsm als xlsx speichern VBA
20.04.2019 17:52:31
cysu11
Hi Tobi,
dann mach doch das auslösen des Makros mit ein Button "Sicherungsdatei erstellen".
Wenn du unbedingt mit der Userform haben willst, dann zeig mal deine Userformen damit wir auch verstehen, wie die Zusammenhänge sind!
LG
Alexandra
AW: xlsm als xlsx speichern VBA
20.04.2019 19:01:27
Tobi
Hallo Alexandra,
wie bereits in meinem ersten Beitrag geschrieben, die UserForm ist angehängt.
Anzeige
AW: xlsm als xlsx speichern VBA
20.04.2019 19:02:37
Tobi
Hallo Alexandra,
die UserForm hatte ich bereits in meinem ersten Beitrag schon angehängt.
AW: xlsm als xlsx speichern VBA
20.04.2019 19:12:22
Tobi
Hallo Alexandra,
Du hast aber Recht, ich erstelle einen separaten Button zum Speichern. Das war eine gute Idee, an die ich gar nicht dachte.
Ich werde das so machen, vielen Dank.
Liebe Grüße Tobi
Anzeige
AW: xlsm als xlsx speichern VBA
20.04.2019 19:22:39
Nepumuk
Hallo Tobi,
warum nicht einfach so:
Private Sub UF1_Liste_Click()
    If Cint(TextBox1.Text) > Tabelle2.Cells(2, 53) Then
        MsgBox "Bitte speichern Sie zuerst den neuen Datensatz " & _
            "oder wählen Sie einen Datensatz aus der Liste aus!"
    Else
        Hide
        ' Userform2.UF2_Lb1.ListCount
        Call Userform2.UF2_Lb1_Zuweisen
        Userform2.Show
        Call UserForm_Initialize
    End If
End Sub

Private Sub UserForm_Terminate()
    Set TextBoxClassCollection = Nothing
    Set CheckBoxClassCollection = Nothing
    Application.DisplayAlerts = False
    Worksheets("Tabelle1").Copy
    With ActiveWorkbook
        .SaveAs Filename:=ThisWorkbook.Path & _
            "\Sicherungskopie_Datenbank.xlsx", FileFormat:=xlOpenXMLWorkbook
        .Close SaveChanges:=False
    End With
    Application.DisplayAlerts = True
End Sub

Gruß
Nepumuk
Anzeige
AW: xlsm als xlsx speichern VBA
20.04.2019 19:30:32
Tobi
Hallo Nepumuk,
das ist ein super Idee und funktioniert ebenfalls prima. Ich danke Dir und Alexandra sehr für Eure Hilfe.
Liebe Grüße und schöne Ostern
Tobi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

xlsm in xlsx umwandeln: So geht's mit VBA


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei im xlsm-Format als xlsx zu speichern, kannst Du den folgenden VBA-Code verwenden. Dieser Code speichert die Datei unter einem neuen Namen, ohne Makros:

Private Sub UserForm_Terminate()
    Dim sichdatei As String
    Dim pfad As String
    Sheets("Tabelle1").Copy
    sichdatei = "Sicherungskopie_Datenbank.xlsx"
    pfad = ThisWorkbook.Path
    ActiveWorkbook.SaveAs pfad & "\" & sichdatei, FileFormat:=xlOpenXMLWorkbook
    ActiveWorkbook.Close SaveChanges:=True
End Sub

Hierbei wird das aktive Arbeitsblatt kopiert und unter dem Namen "Sicherungskopie_Datenbank.xlsx" im Pfad der aktuellen Arbeitsmappe gespeichert. Achte darauf, dass Du das FileFormat korrekt angibst, um die Datei im xlsx-Format zu speichern.


Häufige Fehler und Lösungen

Ein häufiger Fehler, der bei der Verwendung von ActiveWorkbook.SaveAs auftreten kann, ist, dass eine Speicherabfrage erscheint, wenn Du eine UserForm mit Unload Me schließt. Um dies zu vermeiden, kannst Du UserForm.Hide verwenden. Beachte jedoch, dass dies dazu führen kann, dass bestimmte Funktionen, wie das Sortieren einer ListBox, nicht wie gewünscht funktionieren.

Lösung: Erstelle einen separaten Button zum Speichern, um die Speicherung zu steuern, ohne die UserForm zu schließen.


Alternative Methoden

Eine Alternative zur Verwendung von ActiveWorkbook.SaveAs ist die Verwendung des SaveCopyAs-Befehls. Dieser Befehl erstellt eine Kopie der Datei im gewünschten Format, ohne die aktuelle Arbeitsmappe zu schließen:

ThisWorkbook.SaveCopyAs ThisWorkbook.Path & "\Sicherungskopie_Datenbank.xlsx"

Diese Methode ist nützlich, wenn Du die aktuelle Arbeitsmappe weiterhin bearbeiten möchtest.


Praktische Beispiele

Ein einfaches Beispiel zur Umwandlung einer xlsm-Datei in xlsx könnte so aussehen:

  1. Du hast eine UserForm mit einem Button, der die Umwandlung auslöst.
  2. Der Code im Button könnte folgendermaßen aussehen:
Private Sub cmdSave_Click()
    Dim pfad As String
    pfad = ThisWorkbook.Path & "\NeueDatei.xlsx"
    ThisWorkbook.SaveCopyAs pfad
    MsgBox "Datei erfolgreich als xlsx gespeichert!"
End Sub

Wenn Du diesen Button klickst, wird die Datei im xlsx-Format gespeichert, und Du erhältst eine Bestätigungsmeldung.


Tipps für Profis

  • Nutze Application.DisplayAlerts = False, um störende Bestätigungsdialoge während der Speicherung zu unterdrücken.
  • Stelle sicher, dass Du immer das richtige FileFormat angibst, wenn Du eine Datei speicherst. Für xlsx ist das xlOpenXMLWorkbook.
  • Überlege, ob Du eine Sicherungskopie der Originaldatei benötigst, bevor Du mit dem Speichern beginnst.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen xlsm und xlsx?
XLSM-Dateien können Makros enthalten, während XLSX-Dateien keine Makros unterstützen. Wenn Du eine xlsm-Datei in xlsx umwandelst, werden alle Makros entfernt.

2. Wie kann ich sicherstellen, dass meine UserForms ordnungsgemäß funktionieren, wenn ich die Datei speichere?
Verwende UserForm.Hide, um die UserForm nicht zu entladen, und implementiere einen Speichern-Button, um die Speicherung zu steuern. So verhinderst Du unerwünschte Speicherabfragen.

3. Kann ich auch andere Dateiformate speichern?
Ja, Du kannst andere Formate wie CSV oder TXT speichern, indem Du das entsprechende FileFormat in der SaveAs-Methode angibst.

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