Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Frage zu Excelblatt senden

Frage zu Excelblatt senden
28.09.2018 20:32:05
Guesa
Hallo Forum
Folgenden Code habe ich mir aus verschiedenen Vorschlägen zusammengebastelt. Funktioniert auf meinem Privatrechner ca. 3 Sek bis sich Outlook meldet. Wenn ich ihn auf meinem Arbeitsrechner im Netzwerk laufen lasse, dauert es bis zu 6 Minuten bis Outlook aufgeht. Frage: Ist dieser Code fürs Netzwerk geeignet? oder ist da irgendwo eine Bremse drin? Oder liegt es einfach an einem langsamen Netzwerk? Bevor der Code gestartet wird blende ich mit einem zusätzlichen Code 6 Shapes aus und am Ende wieder ein. Hättet Ihr da eventuell einen Tip wie es schneller gehen könnte.
Gruß, Guesa
Sub einzelnes_Blatt_senden()
' Das aktive Tabellenblatt wird über Outlook versendet
' Dimensionierung der Variablen
'Application.ScreenUpdating = False
ActiveSheet.Name = ActiveSheet.Range("L1") 'Vergibt Tabellenname aus Zelle
Dim strBlatt As String
Dim strDatei As String
Dim strPfad As String
Dim outObj As Object
Dim Mail As Object
Dim strBodyText As String
Set outObj = CreateObject("Outlook.Application")
Set Mail = outObj.CreateItem(0)
'Pfad für temporäre Zwischenspeicherung angeben
strPfad = [F1].Value 'der Aktuelle Pfad
' Aktuelles aktives Blatt in neue Arbeitsmappe kopieren
strBlatt = ActiveSheet.Name
' Gewähltes Tabellenblatt kopieren
Sheets(strBlatt).Copy
' Blatt temporär in vorgegebenes Verzeichnis abspeichern
ActiveWorkbook.SaveAs strPfad & "" & ActiveSheet.Name
' Pfad und Dateiname der neuen Datei zwischenspeichern
strDatei = ActiveWorkbook.FullName
' Body-Text festlegen
strBodyText = "Mit freundlichen Grüßen" & Chr(13) & Chr(13) & _
"" & Chr(13) & _
"" & Chr(13) & _
"" & Chr(13)
' Mail erzeugen
With Mail
.To = [G1].Value
'.CC = ""
.Subject = "" 'Betreff
.BodyFormat = 1 '2 = HTML, 1 = Text
.Attachments.Add strDatei 'Anhang
.Body = strBodyText 'Bodytext / Signatur
End With
' Erzeugte Datei schließen
Workbooks(Dir(strDatei)).Close
' Erzeugte Datei wieder löschen
Kill (strDatei)
' E-Mail anzeigen
Mail.Display
Call einblenden
Application.ScreenUpdating = True
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage zu Excelblatt senden
28.09.2018 21:07:19
Luschi
Hallo Guesa,
Du erzeugt ein Objekt zum Zugriff auf Outlook, obwohl noch viele andere Sachen zuvor zu erledigen sind:
- Blatt in eine neue leere Arbeitsmappe (AM) kopieren
- diese neue AM speichern
- dabei ist uns nicht bekannt, wohin sie gespeichert wird
- Netzwerkpfad oder lokaler Pfad
- AM schließen
- temporäre Datei löschen
- Inhalt der E-Mail in Variable sammeln
- endlich E-Mail mit Inhalt füllen
- E-Mail anzeigen
Wie willst Du in diesem Durcheinander feststellen, wer hier die Abarbeitung bremst.
Hier solltest Du unbedingt die Arbeitsabläufe ordnen; man braucht noch kein Zugriff auf Outlook, solange interne Excel-Abläufe im Vordergrund stehen. Wenn Alles organisiert ist, setze einen Haltepunkt oder den Stop-Befehl - und dann greife erst dann auf Outlook zu und schalte mit F8-Taste
jeden Vba-Befehl einzeln weiter (Schrittmodus).
Ich bin mir sicher, daß der Hemmschuh auf der Organisations-Seite von Excel und nicht von Outlook liegt.
Gruß von Luschi
aus klein-Paris
PS: Mit
.Body = strBodyText 'Bodytext / Signatur
wirst Du nie Deine Standard-E-Mail-Signatur zu sehen bekommen, denn die Signatur benötigt den HtmlBody-Zugriff und GetInspector.Display
good luck
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige