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

Forumthread: Dateiname zusammensetzen

Dateiname zusammensetzen
25.11.2007 01:12:33
Thomas
Hallo liebe Excel'er,
leider sind meine VBA Kentnisse echt noch nicht so besonders... deswegen wende ich mich wieder einmal an Euch.
Ich habe eine Datei entworfen (in der es nach dem Aussehen geht), die zur Eingabe von An- und Abwesenheit dient.
Die eingetragenen Daten sind bis auf 2 Felder nebensächlich...
Jetzt meine Probleme bzw. Fragen:
Der unten angefügte Code ist schon ganz prima (hab ich im Forum gefunden),
Es soll nur das gesamte Tabellenblatt versendet werden (so wie sie ist...) nicht nur ein gewisser Bereich...
und ...
der Dateiname soll noch mit 2 Werten aus dem Tabellenblatt verkettet werden...
in B4 steht das Datum
in B8 der Name des Mitarbeiters
damit er unverwechselbarer wird.
Vielen Dank im Voraus.
Gruß Thomas K.

Private Sub sendbutton_Click()
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
ActiveSheet.Range("a1:j32").Copy 'Hier dein Bereich den du senden willst
Workbooks.Add
Sheets(1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveWorkbook.SaveAs "C:\Arbeitszeiterfassung.xls" ' irgendein Pfad für die Temporäre Kopie
With objMail
.To = "hallo@hallo.de"
.Subject = "Arbeitszeiterfassung"
.Body = "Hallo user, hier ist deine Auswertung!"
.Attachments.Add ActiveWorkbook.FullName
.Display
End With
ActiveWorkbook.Close
Kill ("C:\Test.xls") ' löscht deine Kopie wieder
Set objOutlook = Nothing
Set objMail = Nothing
End Sub


Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiname zusammensetzen
25.11.2007 05:40:00
Tino
Hallo,
so müsste es gehen.

Private Sub sendbutton_Click()
Dim DateiName As String
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
DateiName = "C:\" & Range("B4") & "_" & Range("B8") & ".xls" 'Ergibt Dateiname
ActiveSheet.Copy 'Hier dein Bereich den du senden willst
ActiveWorkbook.SaveAs DateiName ' irgendein Pfad für die Temporäre Kopie
With objMail
.To = "hallo@hallo.de"
.Subject = "Arbeitszeiterfassung"
.Body = "Hallo user, hier ist deine Auswertung!"
.Attachments.Add ActiveWorkbook.FullName
.Display
End With
ActiveWorkbook.Close
Kill (DateiName) ' löscht deine Kopie wieder
Set objOutlook = Nothing
Set objMail = Nothing
End Sub


Gruß
Tino

Anzeige
AW: Dateiname zusammensetzen
25.11.2007 13:39:00
Thomas
Hallo Tino, danke hat prima funktioniert. Genau so brauchteich es.
;

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

Dateiname in Excel mit VBA zusammensetzen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und aktiviere die Entwicklertools:

    • Gehe zu „Datei“ > „Optionen“ > „Menüband anpassen“ und aktiviere „Entwicklertools“.
  2. Füge einen Button hinzu:

    • Gehe zu den Entwicklertools und wähle „Einfügen“. Füge einen Button (Formularsteuerelement) auf deinem Arbeitsblatt ein.
  3. VBA-Code hinzufügen:

    • Klicke mit der rechten Maustaste auf den Button und wähle „Makro zuweisen“.
    • Klicke auf „Neu“, um den VBA-Editor zu öffnen.
  4. Verwende den folgenden Code:

    Private Sub sendbutton_Click()
       Dim DateiName As String
       Dim objOutlook As Object
       Dim objMail As Object
       Set objOutlook = CreateObject("Outlook.Application")
       Set objMail = objOutlook.CreateItem(0)
    
       DateiName = "C:\" & Range("B4") & "_" & Range("B8") & ".xls" 'Ergibt Dateiname
       ActiveSheet.Copy 'Hier dein Bereich den du senden willst
       ActiveWorkbook.SaveAs DateiName 'Speichert die Datei temporär
    
       With objMail
           .To = "hallo@hallo.de"
           .Subject = "Arbeitszeiterfassung"
           .Body = "Hallo user, hier ist deine Auswertung!"
           .Attachments.Add ActiveWorkbook.FullName
           .Display 'Zeigt die E-Mail an
       End With
    
       ActiveWorkbook.Close
       Kill (DateiName) 'Löscht die temporäre Kopie
       Set objOutlook = Nothing
       Set objMail = Nothing
    End Sub
  5. Speichere die Datei:

    • Speichere deine Excel-Datei als „Excel-Makro-fähige Arbeitsmappe (*.xlsm)“.

Häufige Fehler und Lösungen

  • Problem: E-Mail wird nicht gesendet
    Lösung: Stelle sicher, dass Outlook korrekt installiert und konfiguriert ist. Der VBA-Code benötigt Zugriff auf Outlook.

  • Problem: Dateiname wird nicht korrekt generiert
    Lösung: Überprüfe, ob die Zellen B4 und B8 die erwarteten Werte enthalten. Stelle sicher, dass die Zellen nicht leer sind.

  • Problem: Fehler beim Speichern
    Lösung: Stelle sicher, dass der Pfad (C:) Schreibrechte hat. Du kannst den Speicherort auch anpassen.


Alternative Methoden

  1. Verwenden von Excel-Funktionen:
    Du kannst auch Excel-Funktionen verwenden, um Dateinamen zu generieren und in eine Zelle zu schreiben, bevor du den VBA-Code ausführst.

  2. Power Automate:
    Wenn du Office 365 verwendest, kannst du Power Automate nutzen, um E-Mails automatisch zu versenden und Dokumente zu speichern.


Praktische Beispiele

  • Beispiel 1: Wenn in Zelle B4 das Datum „2023-10-01“ und in B8 der Name „Max Mustermann“ steht, wird die Datei als „C:\2023-10-01_Max Mustermann.xls“ gespeichert.

  • Beispiel 2: Ändere den Dateipfad im Code, um die Datei in einem anderen Ordner zu speichern, z.B. „C:\Reports\“.


Tipps für Profis

  • Debugging: Nutze Debug.Print im VBA-Code, um Variablenwerte im Direktfenster anzuzeigen. Dies kann helfen, Fehler schneller zu identifizieren.

  • Sicherheitsoptionen: Achte darauf, dass die Makrosicherheit in Excel so eingestellt ist, dass dein Makro ausgeführt werden kann. Gehe zu „Datei“ > „Optionen“ > „Trust Center“ > „Einstellungen für das Trust Center“.

  • Benutzerdefinierte Nachrichten: Passe die E-Mail-Nachricht im Body an, um spezifische Informationen hinzuzufügen, die für den Empfänger relevant sind.


FAQ: Häufige Fragen

1. Kann ich den Code anpassen, um mehrere E-Mails zu versenden?
Ja, du kannst eine Schleife hinzufügen, um mehrere Empfänger-Adressen zu durchlaufen.

2. Funktioniert dieser Code in Excel 2016 und neuer?
Ja, der Code sollte in Excel 2016, Excel 2019 und Excel 365 funktionieren, solange VBA unterstützt wird.

3. Wie kann ich die Datei an einem anderen Speicherort speichern?
Ersetze einfach den Pfad in der Zeile DateiName = "C:\" ... durch deinen gewünschten Speicherort.

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