Office: Einzelnes Arbeitsblatt per Email mit Excel 2007

Helfe beim Thema Einzelnes Arbeitsblatt per Email mit Excel 2007 in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Dieser Code macht mich noch verrückt! :evil: Gleich vorweg, der Code an sich funktioniert :mrgreen: , ABER das Arbeitsblatt, welches ich dann... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von eumel, 9. Juni 2009.

  1. eumel User

    Einzelnes Arbeitsblatt per Email mit Excel 2007


    Dieser Code macht mich noch verrückt! :evil:

    Gleich vorweg, der Code an sich funktioniert :mrgreen: , ABER das Arbeitsblatt, welches ich dann durch den Code mit Excel 2007 erstelle, ist dann offensichtlich kein .xls Format.

    Beim öffnen mit Excel 2003 kommt die Meldung: "Das Format der Datei konnte nicht erkannt werden." mit 2007 kommt die Meldung: Eine Datei hat ein anderes Dateiformat als die Erweiterung vermuten lässt." .

    Mit 2007 kann ich das Arbeitsblatt trotzdem sehen mit 2003 nicht, hier sehe ich nur wilde Zeichen! :evil:

    Ich versuche nun schon den ganzen lieben langen Tag den Fehler zu finden und bin momentan ziemlich ratlos! Einzelnes Arbeitsblatt per Email mit Excel 2007 :oops:

    Ach ja, wenn ich den Code mit Excel 2003 ausführe, funktioniert es.

    Ob von Euch mal jemand einen Tipp abgeben könnte? :mrgreen:

    Code:
    Sub Arbeitsblatt_Email()
    
    Dim objOL As Object
    Dim objMail As Object
    Dim Bezeichnung As String
    Dim EMailan As String
    Dim strName As String
    
    Set objOL = CreateObject("Outlook.Application")
    Set objMail = objOL.CreateItem(0)
    
    'Set Bezeichnung
    Bezeichnung = ActiveSheet.Name
    
    'Set EMailan
    EMailan = "meine.emailadresse@bei.???de"
    
    'Set strName
    strName = ActiveWorkbook.Path & "\" & Bezeichnung & " vom " _
    & Format(Date, "DD.MM.YYYY") & ".xls"
    
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Sheets(Bezeichnung).Copy
    ActiveSheet.Name = Bezeichnung
    ActiveWorkbook.SaveAs strName
    Application.DisplayAlerts = True
    
    With objMail
      .To = EMailan
      .Subject = Bezeichnung
      .Body = "Testeintrag"
      .Attachments.Add ActiveWorkbook.FullName
      .Display ' Display für Indirektversand oder .Send für Direktversand
    End With
    
    ActiveWorkbook.Close
    Kill (strName)
    
    ' Meldung:
    MsgBox ("Beleg wurde erfolgreich versendet.")
    
    Application.Goto ActiveSheet.Range("B10")
    Application.ScreenUpdating = True
    
    End Sub
    Nachfolgender Code funktioniert sowohl mit Excel 2003 als auch mit 2007, ABER hier kann ich z.B. der zu versendenden Arbeitsmappe keinen Namen vergeben, die heißt immer Mappe*.xls und ich habe auch sonst keinen Zugriff auf die Email vor dem senden. :evil:

    Code:
    Sub Active_Sheet_senden()
    Dim sheetName As String
    Dim EMailan As String
    EMailan = InputBox("Bitte geben Sie einen Emailempfänger für den Beleg ein.")
    If EMailan = "" Then Exit Sub
    
    sheetName = ActiveSheet.Name
    
    ActiveSheet.Copy
    ActiveWorkbook.SendMail EMailan, sheetName
    Application.DisplayAlerts = False
    ActiveWindow.Close
    Application.DisplayAlerts = True
    Application.Goto ActiveSheet.Range("B10")
    Application.ScreenUpdating = True
    
    End Sub
     
    eumel, 9. Juni 2009
    #1
  2. miriki Erfahrener User
    Ich hab nur Excel 2000, aber ich hätte vielleicht einen Verdacht: Vielleicht ist es einfach nur ein kleines Timing-Problem?

    Du kopierst das Blatt in eine neue Mappe, gibst der einen Speichernamen und versendest sie dann. Ev. gibt es Probleme, die Datei zu verschicken, weil sie noch offen und womöglich gerade im Speicher-Vorgang ist?

    Setz mal das .close direkt hinter das .saveas, das könnte dann vielleicht schon helfen.

    2. Idee: Kommentier zum Test mal das kill aus, um ein Löschen der Datei zu verhindern, während es vielleicht gerade in die Mail verpackt wird.

    Gruß, Michael

    PS: Warum schaltest Du ScreenUpdating und DisplayAlerts aus?
     
    miriki, 10. Juni 2009
    #2
  3. eumel User
    Hallo miriki,

    hat leider nicht geholfen. Das Ergebnis bleibt gleich.

    DisplayAlerts schalte ich aus um keine Meldungen angezeigt zu bekommen und mit ScreenUpdating verhindere ich die Aktualisierung des Bildschirms und erhöhe dadurch die Geschwindkeit des Markros.
     
    eumel, 10. Juni 2009
    #3
  4. miriki Erfahrener User

    Einzelnes Arbeitsblatt per Email mit Excel 2007

    Hm, schade... Denn ansonsten ist Dein Makro fast das gleiche, was ich für einen Massen-Versand über Lotus-Notes benutze. Ok, ich hab es mit SET-Variablen etwas aufgeplustert, aber der Ablauf ist eigentlich der gleiche.

    Ist schon klar, was es bewirkt, aber das "warum" ist damit nicht beantwortet. Welche Alerts unterdrückst du denn?

    Es dürften in dem Code eigentlich gar keine auftreten. Und wenn, wäre es eher fatal, diese zu unterdrücken. Beim .close wäre dann z.B. ein savechanges:=true als Parameter angesagt.

    Und den Bildschirm nicht zu aktualisieren bringt in dem Code auch nicht viel, weil die "langsame" Abarbeitung eh die über das Filesystem und Outlook ist. Da macht der Refresh des Bildschirms keinen Unterschied mehr. Es erschwert aber das Aufspüren von Problemstellen.

    Gruß, Michael
     
    miriki, 10. Juni 2009
    #4
  5. eumel User
    Leider kommt mit Excel 2007 direkt nach "ActiveWorkbook.SaveAs strName" die Meldung :" Einige Features können in Arbeitsmappen ohne Makros nicht gespeichert werden: VB Projekt.

    Deshalb unterdrücke ich mit DisplayAlerts diese Meldung.

    Wenn ich das gleiche mit Excel 2003 laufen lassen, unterbleibt diese Meldung. Kann es was mit den Einstellungen für die Makros zu tun haben?

    Den Code für ScreenUpdating habe ich herausgenommen. Danke! :-)
     
    eumel, 10. Juni 2009
    #5
  6. miriki Erfahrener User
     
    miriki, 10. Juni 2009
    #6
  7. eumel User
    Mit *.xlsx hatte ich es auch schon probiert, aber leider auch hier die gleiche Meldung.

    ABER dies hier funktioniert tatsächlich:
    ActiveWorkbook.SaveAs strName, xlAddIn8

    Leider aber nur mit 2007, hier ist die Meldung weg. In 2003 kommt dafür die Fehlermeldung: Laufzeitfehler '1004'

    Wir (ich) habe(n) die Probleme jetzt sozusagen getauscht! :mrgreen:

    Ein Möglichkeit wäre vieleicht ein kleine Abfrage hinsichtlich der Excel-Version.
    Bei Ausführung unter Excel 2007
    ActiveWorkbook.SaveAs strName, xlAddIn8

    Bei Excel 2003 dann
    ActiveWorkbook.SaveAs strName

    Hast Du eine Idee wie ich das mit Code sauber lösen kann?
     
    eumel, 10. Juni 2009
    #7
  8. miriki Erfahrener User

    Einzelnes Arbeitsblatt per Email mit Excel 2007

    ??? Häh? Als Add-In speichern? Das macht doch irgendwie auch keinen Sinn...
    Wenn ich "saveas" im VBA-Editor eintippe und F1 drücke, erhalte ich die Hilfe für "saveas". Beim 2. Parameter gibt es den Link auf "FileFormat", wo ich eine Auflistung der Formate finden kann.
    In Excel 2000 gibt es dort u.a. die Konstanten von xlExcel2 bis xlExcel7. Excel 2000 ist, wenn ich mich nicht irre, Version 9, die hier nicht mehr aufgelistet ist. Die müßtest Du aber im 2007er dann finden. Versuch doch mal im 2003er-Format (10?) abzuspeichern, das müßten dann ja beide Versionen problemlos einlesen können.

    Problematisch nur, wenn Du in der Mappe spezielle Funktionen der 2007 benutzt, denn diese würden dann beim Speichern verloren gehen. Aber daß 2003 von Haus aus erstmal das 2007er-Format nicht lesen kann, ist verständlich. Wenn Du also im 2007er-Format abspeichern mußt, ist 2003 ab dann eh außen vor...

    Gruß, Michael
     
    miriki, 10. Juni 2009
    #8
  9. eumel User
    Tja, scheint irgendwie seltsam, zumindest mal für mich! :mrgreen:

    Habe jetzt nachfolgenden Code eingefügt:

    If Application.Version = "12.0" Then
    ActiveWorkbook.SaveAs strName, xlAddIn8
    Else
    ActiveWorkbook.SaveAs strName
    End If

    Funktioniert sowohl mit 2007 als auch mit 2003. Immer schon mal etwas.

    Die Hilfe sagt als XlFileFormat-Enumeration für Excel 97-2003: xlAddIn8

    Dass ganze Problem entsteht eigentlich dadurch, dass ich alles mit Excel 2007 entwerfe, den Code auf 2007 und auf 2003 teste, aber die Anwender noch mit 2003 arbeiten. Einzelnes Arbeitsblatt per Email mit Excel 2007 :oops:
     
    eumel, 10. Juni 2009
    #9
Thema:

Einzelnes Arbeitsblatt per Email mit Excel 2007

Die Seite wird geladen...
  1. Einzelnes Arbeitsblatt per Email mit Excel 2007 - Similar Threads - Einzelnes Arbeitsblatt Email

  2. In einer einzelnen Folie Rechtecke weiterklicken

    in Microsoft PowerPoint Hilfe
    In einer einzelnen Folie Rechtecke weiterklicken: Hallo zusammen, ich bin neu hier. Ich möchte in Powerpoint in einer einzelnen Folie nacheinander bunte Rechtecke mit einem Presenter anklicken bzw. weiterklicken. Zum besseren Verständnis. Jedes...
  3. Semikolon via VBA in einzelne Zellen separieren

    in Microsoft Excel Hilfe
    Semikolon via VBA in einzelne Zellen separieren: Hallo zusammen, ich benötige eure Hilfe. Ich habe eine Zelle mit mehr als 260 Informationen. Die sind durch ein Semikolon getrennt. Bis jetzt habe ich diese über die Funktion "Daten-Text in...
  4. Einzelne Formulare in ein Menüband von Outlook einbinden

    in Microsoft Outlook Hilfe
    Einzelne Formulare in ein Menüband von Outlook einbinden: Hallo Leute, ich habe in Outlook ein neues Menüband angelegt. Dann habe ich mit den Entwicklertools eine Formularvorlage erstellt. Jetzt würde ich gerne dieses einzelne Formular direkt über das...
  5. einzelne Arbeitsblätter mit persönlichem Passwort versehen

    in Microsoft Excel Hilfe
    einzelne Arbeitsblätter mit persönlichem Passwort versehen: Ich suche unter EXCEL 2003 nach einem Weg, wie ich in einer freigegebenen Datei einzelne Arbeitsblätter mit unterschiedlichen Passworten versehen kann. Diese sollen gewährleisten, dass nur...
  6. Abbild einzelner Arbeitsblätter in Arbeitsblatt 1 einfügen

    in Microsoft Excel Hilfe
    Abbild einzelner Arbeitsblätter in Arbeitsblatt 1 einfügen: Hallo allerseits, ich möchte den Inhalt meiner verschiedene Arbeitsblätter der selben Arbeitsmappe auf dem ersten Arbeitsblatt darstellen. Die Darstellung sollte sich mit dem jeweiligen...
  7. Arbeitsblätter einzeln abspeichern

    in Microsoft Excel Hilfe
    Arbeitsblätter einzeln abspeichern: Hallo! ich habe ein problem: Ich habe eine große excel tabelle die ein blatt enthält welches bestimmte daten enthält.... andere blätter in der excel tabelle beziehen sich auf die inhalte des...
  8. einzelne Arbeitsblätter aus Arbeitsmappe versenden

    in Microsoft Excel Hilfe
    einzelne Arbeitsblätter aus Arbeitsmappe versenden: Hallo, wie kann ich einzelne Arbeitsblätter aus einer Arbeitsmappe per EMail versenden? Vielen Dank für eure Hilfe.
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden