Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Kopie als xlsx speichern

Kopie als xlsx speichern
12.06.2018 14:43:21
Nico
Hallo zusammen,
erst einmal kurz zu mir, heiße Nico, mittleren Alters und verfüge über ausreichende Excel-Kenntnisse. VBA ist allerdings völliges Neuland für mich. Den ein oder anderen Makrorekorder habe ich schon genutzt. Aus der Google-Wissens-Datenbank habe ich mir VBA-Bausteine zusammengesucht, die zwei Buttons in meiner aktuellen Projekt-Liste steuern.
Ich habe ein Template erstellt, welches im Augenblick sehr gut funktioniert. Es handelt sich dabei um eine Vorlage für diverse Spediteure die ich mit relevanten Daten füttere. Dann nutze ich den ersten Button, der das Template unter neuem Namen (Verbindung aus Spediteurname und Datum) in einem separatem Unterordner abspeichert, als xlsm Datei.
Danach nutze ich Button 2, der im Outlook eine Mail öffnet, die gespeicherte Datei anhängt und einen Standardtext vorschreibt.
Wie gesagt funktioniert das soweit alles super. Leider haben wir nun einen Spediteur, der keine xlsm Dateien empfangen kann. Und damit fangen meine Probleme an.
Mir ist bewusst, dass ich die Datei durchaus mit Speichern unter als xlxs speichern kann. Allerdings bin ich ein Freund von Automatismen und ziele eine Lösung via VBA an.
wenn ich in meinem jetzigen Makro alles auf xlsx umschreibe, geht die komplette VBA-Programmierung im Hintergrund verloren und mein 2. Button für die Mail funktioniert nicht. Und jetzt brauche ich Eure Hilfe.
Ich möchte gerne, dass das Template
1. als xlsm File gespeichert wird
2. eine Kopie als xlsx Datei abgespeicehrt wird
3. der Mail button funktioniert und die xlsx Datei anhängt
Hier der aktuelle VBA-Code:
Private Sub CommandButton1_Click()
ActiveWorkbook.SaveAs Range("C8").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
Private Sub CommandButton2_Click()
'Hier definiere ich eine Variable für den Anhang
Dim strAnhang As String
'In der Zelle C8 befindet sich der korrekte Pfad
strAnhang = Range("C8")
'DIESER TEIL ÖFFNET "OUTLOOK"
Set outObj = CreateObject("Outlook.Application")
Set Mail = outObj.CreateItem(0)
'FOLGENDE TEXTE WERDEN IN DIE E-MAIL GESCHRIEBEN
Mail.To = ""
'Betreff:
Mail.Subject = Range("C6").Value
'Mailtext
Mail.Body = "Hello all" & Chr(13) & _
"" & Chr(13) & _
"please find attached the parceladvise" & Chr(13) & _
"" & Chr(13) & _
"Best regards"
'hier soll der Anhantg hinzugefügt werden
Mail.Attachments.Add strAnhang
Mail.Display
Set Mail = Nothing
Set outObj = Nothing
End Sub


		
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopie als xlsx speichern
12.06.2018 14:48:24
Nepumuk
Hallo Nico,
benutze an Stelle von xlOpenXMLWorkbookMacroEnabled einfach xlOpenXMLWorkbook
Gruß
Nepumuk
AW: Kopie als xlsx speichern
12.06.2018 14:56:35
Nico
Hallo Nepumuk,
Danke für deine schnelle Antwort. Das erzeugt das Problem, was ich gerne vermeiden möchte. Durch diesen Eintrag wird dieses Avis als xlsx gespeichert, aber dadurch verliere ich die Funktion des zweiten Buttons, oder liege ich da falsch?
Gruß
Nico
Anzeige
AW: Kopie als xlsx speichern
12.06.2018 18:10:25
Nepumuk
Hallo Nico,
solange die Mappe offen ist sind die Makros noch da. Die werden erst beim Schließen entfernt.
Gruß
Nepumuk
AW: Kopie als xlsx speichern
12.06.2018 15:29:39
Daniel
Hi
probiers mal so:
1. der Speichername in C8 sollte nur den Dateinamen ohne die Dateierweiterung enthalten.
diese Dateierweiterung wird beim SaveAs autmatisch hinzugefügt.
2. im Commandbutton1 speicherst du 2x, zuerst als xlsx und dann als xlsm.
die makros bleiben beim SaveAs in der geöffneten Datei erhalten.
Private Sub CommandButton1_Click()
ActiveWorkbook.SaveAs Range("C8").Value, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.SaveAs Range("C8").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
3. hänge im Mail dann die Makrofreie Datei an, C8 sollte wie oben geschrieben den Dateinamen ohne Erweiterung enthalten:
 Mail.Attachments.Add strAnhang & ".xlsx"
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Kopie als xlsx speichern in Excel


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei als xlsx zu speichern und gleichzeitig eine Kopie der Datei zu erstellen, folge diesen Schritten:

  1. Öffne dein Excel-Dokument und stelle sicher, dass deine Daten korrekt sind.
  2. Füge einen Button in dein Arbeitsblatt ein, um den VBA-Code auszuführen.
  3. Öffne den VBA-Editor mit ALT + F11.
  4. Füge den folgenden Code in das Modul für deinen Button ein:
Private Sub CommandButton1_Click()
    ' Speichere die Datei als xlsx
    ActiveWorkbook.SaveAs Range("C8").Value, FileFormat:=xlOpenXMLWorkbook
    ' Speichere die Datei als xlsm
    ActiveWorkbook.SaveAs Range("C8").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
  1. Stelle sicher, dass in Zelle C8 der Dateiname ohne die Erweiterung angegeben ist. Der Code wird die Erweiterung automatisch hinzufügen.
  2. Füge den Code für den zweiten Button hinzu, um die xlsx-Datei anzuhängen:
Private Sub CommandButton2_Click()
    Dim strAnhang As String
    strAnhang = Range("C8").Value & ".xlsx"

    Set outObj = CreateObject("Outlook.Application")
    Set Mail = outObj.CreateItem(0)

    Mail.To = ""
    Mail.Subject = Range("C6").Value
    Mail.Body = "Hello all" & vbCrLf & _
                "please find attached the parceladvise" & vbCrLf & _
                "Best regards"

    Mail.Attachments.Add strAnhang
    Mail.Display

    Set Mail = Nothing
    Set outObj = Nothing
End Sub

Häufige Fehler und Lösungen

  • Problem: Die xlsx-Datei wird ohne Makros gespeichert.

    • Lösung: Stelle sicher, dass du die Datei zuerst als xlsx und dann als xlsm speicherst. Nutze die oben angegebene Reihenfolge im VBA-Code.
  • Problem: Der Button für das Versenden der E-Mail funktioniert nicht.

    • Lösung: Überprüfe, ob der Pfad in Zelle C8 korrekt ist und die Datei als ".xlsx" angehängt wird.

Alternative Methoden

Falls du keine VBA-Lösungen verwenden möchtest, kannst du die Excel-Datei manuell speichern:

  1. Klicke auf Datei > Speichern unter.
  2. Wähle im Dropdown-Menü den Dateityp *Excel-Arbeitsmappe (.xlsx)** aus.
  3. Klicke auf Speichern.

Du kannst auch die Funktion "Speichern unter" nutzen, um eine Kopie von Excel-Datei zu erstellen, jedoch wird dies manuell durchgeführt und bietet nicht den Automatisierungsgrad, den VBA ermöglicht.


Praktische Beispiele

Hier ist ein einfaches Beispiel für die Verwendung des Codes:

  • Du hast ein Template für Spediteure, das regelmäßig aktualisiert wird.
  • Mit dem Button speicherst du die Datei als xlsm für deine Verwendung und gleichzeitig als xlsx, um sie an einen Spediteur zu senden.

Nutze die Funktionalität von VBA, um deine Arbeitsabläufe zu optimieren, indem du eine xlsx-Datei speicherst und automatisch per E-Mail versendest.


Tipps für Profis

  • Vergewissere dich, dass du den korrekten FileFormat verwendest, um die gewünschten Dateiformate zu speichern. Für xlsx ist das xlOpenXMLWorkbook.
  • Verwende Kommentare in deinem VBA-Code, um die Funktionalität zu erklären, was dir und anderen in der Zukunft hilft, den Code leichter zu verstehen.
  • Teste deinen Code regelmäßig, um sicherzustellen, dass alle Funktionen wie gewünscht arbeiten, insbesondere wenn Änderungen vorgenommen werden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Makros nach dem Speichern erhalten bleiben?
Die Makros bleiben erhalten, solange die Arbeitsmappe geöffnet bleibt. Wenn du die Datei als xlsx speicherst, wird nur die Makro-freie Version gespeichert.

2. Kann ich den Code anpassen, um weitere Dateiformate zu speichern?
Ja, du kannst den FileFormat im SaveAs-Befehl anpassen, um verschiedene Formate wie .xls oder .csv zu speichern. Achte darauf, die korrekten VBA-Enums zu verwenden.

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