Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst VBA - Tabellenformatierung in Mail beibehalten

Mitglied: 106543

106543 (Level 2)

03.05.2013 um 09:52 Uhr, 8569 Aufrufe, 10 Kommentare

Hi Leute

immer noch bin ich am selben Tool dran und immer noch bereitet mir die tabelle Kopfzerbrechen

habe folgenden Code:
01.
Sub Mail_senden() 
02.
 
03.
sNachricht = UserForm1.TextBox_Mailtext.Text 
04.
 
05.
If sBetreff = "" Or sNachricht = "" Or sEmpfänger = "" Then 
06.
    MsgBox "Es muss ein Betreff, ein Text und ein Empfänger für die Nachricht gegeben sein." & vbCrLf & "Bitte die Ressourcen-Listen überprüfen.", , "Error" 
07.
    Call Log_Meldung("Entweder Betreff, Nachricht oder Empfänger leer. Abbruch des Mailversands.") 
08.
    Exit Sub 
09.
End If 
10.
 
11.
If UserForm1.Option_Retoure = True Then 
12.
    Dim iZelle2 As String 
13.
    For i = 2 To 40 
14.
        If Worksheets(2).Cells(i, 1) = "" Then 
15.
            i = i - 1 
16.
            Exit For 
17.
        End If 
18.
    Next 
19.
    sZelle2 = "D" & i 
20.
    ThisWorkbook.Sheets("Tabelle2").Select 
21.
    Range("A1", sZelle2).Select 
22.
    Application.Selection.Copy 
23.
     
24.
    Dim oClipboard As Object 
25.
    Dim sClipBoardString As String 
26.
    Set oClipboard = New DataObject 
27.
    oClipboard.GetFromClipboard 
28.
    sClipBoardString = oClipboard.GetText 
29.
    sNachricht = Replace(sNachricht, "Bitte hier die Tabelle einfügen... (STRG +V)", sClipBoardString) 
30.
End If 
31.
 
32.
Dim sAbsender As String 
33.
Dim Outlook As Object 
34.
Dim Nachricht As Object 
35.
 
36.
Set Outlook = CreateObject("Outlook.Application") 
37.
Set Nachricht = Outlook.CreateItem(0) 
38.
sAbsender = "Ftth-Aussendienst@telekom.de" 
39.
 
40.
'Nachricht.To sEmpfänger 
41.
Nachricht.Recipients.Add sEmpfänger 
42.
Nachricht.SentOnBehalfOfName = sAbsender 
43.
Nachricht.CC = "Ralf.Jochim@telekom.de;AEngel.telekom.de" 
44.
Nachricht.Subject = sBetreff 
45.
Nachricht.Body = sNachricht 
46.
Nachricht.ReadReceiptRequested = False 
47.
Nachricht.Display 
48.
Call Log_Meldung("Mail wurde erstellt mit dem Empfänger: " & sEmpfänger & " und dem Absender: " & sAbsender & " und dem Betreff: " & sBetreff & " und dem Nachrichtentext: " & sNachricht) 
49.
 
50.
Set Outlook = Nothing 
51.
     
52.
End Sub
nun fügt er mir zwar brav die Tabelle in Outlook ein, aber die Formatierung ist total zerschossen und die Tabellen-"Trenn"-Linien werden nicht mehr angezeigt

Weiß einer von euch ´ne Möglichkeit, das Ding wieder zu formatieren ?

Grüße
Exze
Mitglied: colinardo
03.05.2013, aktualisiert um 10:56 Uhr
Deine Mail hat wahrscheinlich Nur-Text-Format:
ändere mal
Nachricht.Body = sNachricht
in
Nachricht.HTMLBody = sNachricht
eventuell ist auch in den Zwischenablage-Einstellungen von Outlook festgelegt das standardmässig nur der Text übernommen wird und nicht die Formatierung.

Grüße Uwe
Bitte warten ..
Mitglied: 106543
03.05.2013 um 10:55 Uhr
Hi Uwe,

ja die hat nur Textformat, wenn ich allerdings HTMLBody verwende zerschießts mir die Formatierung des restlichen Texttes was auch nicht Sinn der Sache ist

Grüße
Exze
Bitte warten ..
Mitglied: colinardo
03.05.2013 um 11:28 Uhr
Habe gerade nachgelesen, das DataObject unterstützt im Moment nur Textformate d.h. Formatierungen lassen sich damit nicht übertragen.
Ich schaue mal nach Alternativen...
Bitte warten ..
Mitglied: 106543
03.05.2013 um 11:36 Uhr
Dank dir

von Hand STRG+V funktioniert ja, von daher könnte man´s mit SendKeys machen, will aber nicht mit SendKeys arbeiten -_-
Da kommen immer ganz komische Dinger raus, wenn der User n anderes Fenster in dem Moment selektiert.

Grüße
Exze
Bitte warten ..
Mitglied: colinardo
03.05.2013 um 11:36 Uhr
Du könntest den Inhalt des Ranges in HTML wandeln und dann in die Mail einfügen wie hier beschrieben:
http://www.rondebruin.nl/win/s1/outlook/bmail2.htm
Bitte warten ..
Mitglied: 106543
03.05.2013 um 11:40 Uhr
Hi Uwe,

wie schon gesagt, kann ich den HTMLBody nicht nutzen, weil sonst der restliche Text nicht mehr formatiert ist
danke für die Mühe aber ich denke ich muss einfach mit SendKeys abreiten.
Jetzt muss ich mur nur eine Möglichkeit finden, den User keine andere Application auswählen zu lassen.
Screenupdating = false klingt gut.

Danke für deine Mühe
Grüße
Exze
Bitte warten ..
Mitglied: 106543
03.05.2013 um 12:56 Uhr
so ich markier den Beitrag jetzt mal als gelöst
ich hänge auch mal den VBA-Quellcode an
zwar nicht die von mir erhoffte Lösung, aber es funktioniert
01.
Sub Mail_senden() 
02.
 
03.
sNachricht = UserForm1.TextBox_Mailtext.Text 
04.
 
05.
If sBetreff = "" Or sNachricht = "" Or sEmpfänger = "" Then 
06.
    MsgBox "Es muss ein Betreff, ein Text und ein Empfänger für die Nachricht gegeben sein." & vbCrLf & "Bitte die Ressourcen-Listen überprüfen.", , "Error" 
07.
    Call Log_Meldung("Entweder Betreff, Nachricht oder Empfänger leer. Abbruch des Mailversands.") 
08.
    Exit Sub 
09.
End If 
10.
 
11.
If UserForm1.Option_Retoure = True Then 
12.
    Dim iZelle2 As String 
13.
    For i = 2 To 40 
14.
        If Worksheets(2).Cells(i, 1) = "" Then 
15.
            i = i - 1 
16.
            Exit For 
17.
        End If 
18.
    Next 
19.
    sZelle2 = "D" & i 
20.
    ThisWorkbook.Sheets("Tabelle2").Select 
21.
    Range("A1", sZelle2).Select 
22.
    Application.Selection.Copy 
23.
    sNachricht = Replace(sNachricht, "Bitte hier die Tabelle einfügen... (STRG +V)", "") 
24.
End If 
25.
 
26.
Dim sAbsender As String 
27.
Dim Outlook As Object 
28.
Dim Nachricht As Object 
29.
Dim outlook2 As Object 
30.
 
31.
Set Outlook = CreateObject("Outlook.Application") 
32.
Set Nachricht = Outlook.CreateItem(0) 
33.
sAbsender = "Ftth-Aussendienst@telekom.de" 
34.
 
35.
'Nachricht.To sEmpfänger 
36.
Nachricht.Recipients.Add sEmpfänger 
37.
Nachricht.SentOnBehalfOfName = sAbsender 
38.
Nachricht.CC = "Ralf.Jochim@telekom.de;AEngel.telekom.de" 
39.
Nachricht.Subject = sBetreff 
40.
Nachricht.Body = sNachricht 
41.
Nachricht.ReadReceiptRequested = False 
42.
Nachricht.Display 
43.
Call Log_Meldung("Mail wurde erstellt mit dem Empfänger: " & sEmpfänger & " und dem Absender: " & sAbsender & " und dem Betreff: " & sBetreff & " und dem Nachrichtentext: " & sNachricht) 
44.
 
45.
Application.Wait (10) 
46.
 
47.
If UserForm1.Option_Retoure = True Then 
48.
    If UserForm1.Option_NurMit = True Or UserForm1.Option_GemischtMit = True Then 
49.
        Application.SendKeys ("{DOWN}") 
50.
        Application.SendKeys ("{DOWN}") 
51.
        Application.SendKeys ("{DOWN}") 
52.
        Application.SendKeys ("{DOWN}") 
53.
        Application.SendKeys ("{DOWN}") 
54.
        Application.SendKeys ("{DOWN}") 
55.
        Application.SendKeys ("{DOWN}") 
56.
        Application.SendKeys ("{DOWN}") 
57.
        Application.SendKeys ("{DOWN}") 
58.
        Application.SendKeys ("^v") 
59.
    End If 
60.
End If 
61.
 
62.
Set Outlook = Nothing 
63.
 
64.
End Sub
Bitte warten ..
Mitglied: colinardo
03.05.2013, aktualisiert um 13:24 Uhr
Noch zur Info ein Zellenbereich lässt sich auch als Bild kopieren. Dann sieht das beim Empfänger immer gleich aus.

In deinem Script in Zeile 23:
Application.Selection.CopyPicture
--edit--
nach dem aufrufen der .Display-Methode kannst du noch folgendes machen damit das Mailfenster zuverlässiger in den Vordergrund kommt:
Outlook.ActiveInspector.Activate
Application.Wait (10) => geht nicht ... Die Zeit muss im Datumsformat von Excel erfolgen z.B. so
Application.Wait Now + TimeValue("0:00:01")
Bitte warten ..
Mitglied: 76109
03.05.2013, aktualisiert 05.05.2013
Hallo Exzellius!

Hier noch was zum experimentieren...:
01.
    Dim oHtml           As PublishObject 
02.
    Dim sSheetName      As String 
03.
    Dim sSheetRange     As String 
04.
    Dim sHtmFile        As String 
05.
    Dim sHtmTitel       As String 
06.
    Dim sHtmBody        As String 
07.
    Dim sHtmText        As String 
08.
     
09.
    sSheetName = "Tabelle1"     'Tabellenname 
10.
    sSheetRange = "A1:F20"      'Tabellen-Bereich 
11.
     
12.
    sHtmTitel = "Mein Titel"    'Überschrift Fett 
13.
    sHtmText = "Mein Text"      'Text 
14.
     
15.
    sHtmFile = Environ("Temp") & "\" & sSheetName & ".htm" 
16.
     
17.
    Set oHtml = ThisWorkbook.PublishObjects.Add( _ 
18.
                             SourceType:=xlSourceRange, Filename:=sHtmFile, _ 
19.
                             Sheet:=sSheetName, Source:=sSheetRange, Title:=sHtmTitel) 
20.
     
21.
    oHtml.Publish True      'Htm-Datei erzeugen 
22.
     
23.
    sHtmBody = CreateObject("Scripting.FileSystemObject").OpenTextFile(sHtmFile).ReadAll 
24.
     
25.
    sHtmBody = Replace(sHtmBody, "<table", "<p>" & sHtmText & "</p>" & vbCrLf & "<table") 
26.
     
27.
    '..... 
28.
        '.HTMLbody = sHtmBody 
29.
    '..... 
30.
     
31.
    oHtml.Delete:   Kill sHtmFile
Gruß Dieter

[edit]
Der Vollständigkeit halber noch colinardos Anregung mit CopyPicture und GetInspector...:
01.
    Sheets("Tabelle1").Range("A5:F8").CopyPicture xlScreen, xlBitmap 
02.
 
03.
    With CreateObject("Outlook.Application").CreateItem(0) 
04.
        '...... 
05.
        .Body = sMessage 
06.
         With .GetInspector.WordEditor.Paragraphs 
07.
            .Add 
08.
            .Last.Range.Paste 
09.
         End With 
10.
         Application.CutCopyMode = False 
11.
        .Display 
12.
    End With
[/edit]
Bitte warten ..
Mitglied: 106543
10.05.2013 um 08:56 Uhr
Hi ihr beiden,

danke für die Anregungen
@colinardo: als Bild kopieren wäre nicht geeignet, weil die User selbst Daten eintragern müssen und zwar noch in der Mail, das wäre mit einem Bild nicht möglich.
@did1954: danke, werd mal schauen was ich da verwenden kann.

Grüße
Exze
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

Excel 2010 - Sind Spaltenfilter auch ohne Tabellenformatierung möglich?

gelöst Frage von Rene1976Microsoft Office2 Kommentare

Hallo, ich finde die Drop-Down Filter in den Überschriften von formatierten Tabellen sehr praktisch. Ich will aber nicht immer ...

Microsoft Office

VBA Makro Mails aus Excel versenden

gelöst Frage von ExxiStMicrosoft Office7 Kommentare

Guten Tag zusammen, folgendes Problem treibt mich schon seit Tagen zur Verzweiflung: Aus einer Excel Datei werden durch folgendes ...

Outlook & Mail

VBA Programmierung (Ausführung bei gelesenen Mails)

Frage von TwykerOutlook & Mail1 Kommentar

Hey Zusammen, ich eigne mir grade VBA an und komme jetzt nicht mehr weiter. Ich hab ein Lampensystem an ...

VB for Applications

VBA Outlook - Mail delivery system

gelöst Frage von carolin.zeldaVB for Applications5 Kommentare

Hallo zusammen, und zwar habe ich folgendes Problem: Wir arbeiten mit einem Newslettersystem und bekommen sehr oft Emails zurück, ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 3 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...