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

Forumthread: XLSM als XLSX speichern und versenden

XLSM als XLSX speichern und versenden
08.08.2022 11:32:14
Markus
Hallo.
Mein Ziel ist es eine Kalkulation mit fortlaufender Nummer zu bearbeiten, diese per klick in einem Ordner zu speichern und mit Outlook zu versenden.
Mein aktueller Stand ist, die Datei wird erstellt und abgelegt, eine Mail wird unter vorgegebenen Namen mit der fortlaufenden Nummer in den Postausgang gegeben.
Soweit passt alles, aber leider, bekomme ich es nicht hin, die Datei anzuhängen und das liegt nicht daran, dass sich der Dateiname durch die fortlaufende Nummer ständig ändert. Ich habe eine Datei mit dem Namen Test.xlsx abgelegt und versucht diese anzuhängen, aber leider bekomme ich das nicht hin.
Enttäuschenderweise bekomme ich aktuell überhaupt nichts angehangen.
Der VBA haut mir immer einen Laufzeitfehler '1004 um die Ohren. "Anwendungs- oder objektdefinierter Fehler
Das habe ich bisher zustande gebracht:

Private Sub CommandButton1_Click()
Dim path As String
Dim fname As String
Dim invno As Long
path = "C:\Users\ich\Eigene Dateien\Kalkulationen\"
invno = Range("A3")
fname = invno & " - " & Range("A1")
Application.DisplayAlerts = False
Tabelle1.Copy
ActiveSheet.Shapes("CommandButton1").Delete
With ActiveWorkbook
.SaveAs Filename:=path & fname, FileFormat:=51
.Close
End With
MsgBox "Ihre nächste KK- Nummer lautet " & invno + 1
Range("A3") = invno + 1
ThisWorkbook.Save
Application.DisplayAlerts = True
Dim oApp As New Outlook.Application
Dim oMail As Outlook.MailItem
Set oMail = oApp.CreateItem(olMailItem)
With oMail
.BodyFormat = olFormatHTML
.Display
.To = "ich@mich.de"
.CC = ""
.Subject = "KK - " & Tabelle1.Range("A1").Value & "  " & Tabelle1.Range("A2").Value & "  " & Tabelle1.Range("A4").Value
.HTMLBody = "Hallo, ich bitte um Überprüfung angefügter Datei. Besten Dank vorab." & .HTMLBody
.Attachments.Add "C:\Users\ich\Eigene Dateien\Kalkulationen\Test.xlsx"
.Send
End With
End Sub
Nachdem ich mir einen Wolf gegoogelt habe muss ich sagen, ich bin im Moment aufgeschmissen und komme nicht mehr weiter.
Über einen Tipp wäre ich sehr dankbar.
Ciao
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: XLSM als XLSX speichern und versenden
08.08.2022 12:21:36
Nepumuk
Hallo Markus,
teste mal:

Private Sub CommandButton1_Click()
Dim path As String
Dim fname As String
Dim strFullname As String
Dim invno As Long
path = "C:\Users\ich\Eigene Dateien\Kalkulationen\"
invno = Range("A3")
fname = invno & " - " & Range("A1")
Application.DisplayAlerts = False
Tabelle1.Copy
ActiveSheet.Shapes("CommandButton1").Delete
With ActiveWorkbook
.SaveAs Filename:=path & fname, FileFormat:=xlOpenXMLWorkbook
strFullname = .FullName
.Close
End With
MsgBox "Ihre nächste KK- Nummer lautet " & invno + 1
Range("A3") = invno + 1
ThisWorkbook.Save
Application.DisplayAlerts = True
Dim oApp As New Outlook.Application
Dim oMail As Outlook.MailItem
Set oMail = oApp.CreateItem(olMailItem)
With oMail
.BodyFormat = olFormatHTML
.Display
.To = "ich@mich.de"
.CC = ""
.Subject = "KK - " & Tabelle1.Range("A1").Value & "  " & Tabelle1.Range("A2").Value & "  " & Tabelle1.Range("A4").Value
.HTMLBody = "Hallo, ich bitte um Überprüfung angefügter Datei. Besten Dank vorab." & .HTMLBody
.Attachments.Add strFullname
.Send
End With
End Sub
Gruß
Nepumuk
Anzeige
AW: XLSM als XLSX speichern und versenden
08.08.2022 14:50:14
Markus
Genau das passiert, wenn du jemanden fragst, der Ahnung hat!
Es läuft!
Nepumuk, 1000 Dank
Ciao
AW: XLSM als XLSX speichern und versenden
08.08.2022 16:37:07
Markus
Hallo.
Jetzt ist doch noch ein Fehler aufgetreten.
Steht ein einfacher Name wie Uwe im entsprechenden Feld, funktioniert alles perfekt.
Bei einem Namen wie "HIFI UWE GmbH Kunden-Nr. 50793" wird der Dateiname zwar perfekt geschrieben, aber die Endung "xlsx" fehlt.
Kennst du dafür eine Lösung?
Anzeige
AW: XLSM als XLSX speichern und versenden
08.08.2022 16:50:17
Nepumuk
Hallo Markus,
das liegt am Punkt im Dateinamen. Hänge die Endung einfach an.

fname = invno & " - " & Range("A1").Text & ".xlsx"
Gruß
Nepumuk
AW: XLSM als XLSX speichern und versenden
11.08.2022 08:42:57
Markus
Was soll ich sagen? Du kennst dich eben aus!
Funktioniert bestens.
Besten Dank und viele Grüße
Ciao
Anzeige
AW: XLSM als XLSX speichern und versenden
11.08.2022 09:33:00
Markus
Geht leider nicht.
Alles nimmt er, Ziffern, Blanks, Binde- und Unterstrich und sonstige Zeichen, aber einen Punkt mag er nicht.
Komisch
Besten Dank und viele Grüße
Ciao
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

XLSM in XLSX umwandeln und versenden


Schritt-für-Schritt-Anleitung

Um eine XLSM-Datei mithilfe von VBA in eine XLSX-Datei umzuwandeln und diese dann zu versenden, kannst du die folgenden Schritte befolgen:

  1. Öffne Excel und erstelle ein neues VBA-Modul:

    • Gehe zu Entwicklertools > Visual Basic.
    • Füge ein neues Modul hinzu.
  2. Kopiere den folgenden VBA-Code in das Modul:

    Private Sub CommandButton1_Click()
        Dim path As String
        Dim fname As String
        Dim strFullname As String
        Dim invno As Long
        path = "C:\Users\ich\Eigene Dateien\Kalkulationen\"
        invno = Range("A3").Value
        fname = invno & " - " & Range("A1").Value & ".xlsx"
    
        Application.DisplayAlerts = False
        Tabelle1.Copy
    
        With ActiveWorkbook
            .SaveAs Filename:=path & fname, FileFormat:=xlOpenXMLWorkbook
            strFullname = .FullName
            .Close
        End With
    
        MsgBox "Ihre nächste KK- Nummer lautet " & invno + 1
        Range("A3").Value = invno + 1
        ThisWorkbook.Save
        Application.DisplayAlerts = True
    
        Dim oApp As New Outlook.Application
        Dim oMail As Outlook.MailItem
        Set oMail = oApp.CreateItem(olMailItem)
    
        With oMail
            .BodyFormat = olFormatHTML
            .Display
            .To = "ich@mich.de"
            .CC = ""
            .Subject = "KK - " & Tabelle1.Range("A1").Value
            .HTMLBody = "Hallo, ich bitte um Überprüfung angefügter Datei. Besten Dank vorab." & .HTMLBody
            .Attachments.Add strFullname
            .Send
        End With
    End Sub
  3. Passe den Dateipfad an deinen Speicherort an.

  4. Starte das Makro über einen Button in deiner Excel-Datei oder im VBA-Editor.


Häufige Fehler und Lösungen

  • Laufzeitfehler '1004': Dieser Fehler tritt häufig auf, wenn der angegebene Dateipfad falsch ist oder die Datei nicht gefunden wird. Überprüfe den Pfad in der path-Variable.

  • Dateiname hat keine Endung: Wenn der Dateiname aufgrund von Punkten oder anderen Zeichen nicht korrekt angezeigt wird, stelle sicher, dass du die Endung ".xlsx" korrekt anfügst:

    fname = invno & " - " & Range("A1").Text & ".xlsx"
  • Anwendung hängt sich auf: Wenn Excel beim Speichern oder Versenden der E-Mail einfriert, überprüfe, ob andere Prozesse im Hintergrund laufen, die die Anwendung blockieren.


Alternative Methoden

Falls du die Umwandlung von XLSM zu XLSX ohne VBA durchführen möchtest, kannst du dies manuell tun:

  1. Öffne die XLSM-Datei in Excel.
  2. Gehe zu Datei > Speichern unter.
  3. Wähle im Dropdown-Menü Dateityp die Option Excel-Arbeitsmappe (*.xlsx) und speichere die Datei.

Diese Methode ist einfach, erfordert jedoch manuelle Schritte und ist weniger automatisiert.


Praktische Beispiele

Beispiel 1: Um eine XLSM-Datei in eine XLSX-Datei zu speichern und eine E-Mail zu versenden, nutze den oben genannten VBA-Code.

Beispiel 2: Wenn du mehrere Dateien versenden möchtest, kannst du eine Schleife implementieren, um alle relevanten Dateien in einem Ordner anzuhängen:

Dim file As String
file = Dir(path & "*.xlsx")
Do While file <> ""
    .Attachments.Add path & file
    file = Dir
Loop

Tipps für Profis

  • Nutze die FileFormat-Konstanten: Verwende xlOpenXMLWorkbook für XLSX und xlOpenXMLWorkbookMacroEnabled für XLSM. Dies hilft, den Code lesbarer zu gestalten.

  • Fehlerbehandlung einbauen: Um Laufzeitfehler zu vermeiden, implementiere eine Fehlerbehandlung:

    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich eine XLSM-Datei als XLSX speichern? Du kannst die SaveAs-Methode in VBA verwenden und FileFormat:=xlOpenXMLWorkbook angeben.

2. Was ist der Unterschied zwischen XLSM und XLSX? XLSM-Dateien enthalten Makros, während XLSX-Dateien keine Makros speichern können. Wenn du eine XLSM-Datei in eine XLSX-Datei umwandelst, gehen alle Makros verloren.

3. Kann ich mehrere XLSX-Dateien gleichzeitig versenden? Ja, du kannst eine Schleife im VBA-Code verwenden, um mehrere Dateien anzuhängen und zu versenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige