Wątek przeniesiony 2021-01-28 13:22 z Inne języki programowania przez cerrato.

VBA - tworzenie email outlook w Excel

0

Witam forumowiczów.
Na wstępie chciałem zaznaczyć że jestem mocno początkujący w dziedzinie VBA. Chciałem ułatwić sobie pracę, a mianowicie stworzyć formułę która po kliknięciu w przycisk automatycznie wygeneruje maila. Jako temat pobiera dane z dwóch komórek i to działa prawidłowo. Treść w tym momencie także pobiera prawidłowo jednakże w excelu "załącznik 1" jest sporo treści i niestety VBA wkleja treść mocno rozrzuconą "załącznik 2 (nieczytelną). Bardzo proszę o podpowiedź. Czy jest szansa aby wklejało się to tak jak w załączniku "3"?

Private Sub Mail()

   Dim objol As New Outlook.Application

   Dim objmail As MailItem

   Dim varBody As String

   Dim objdata As DataObject

   Set objol = New Outlook.Application

   Set objmail = objol.CreateItem(olMailItem)

   Set objdata = New DataObject

  Worksheets("plan linia").Range("A1:P66").Copy

   objdata.GetFromClipboard

   varBody = objdata.GetText

   Dim temat As String

   Worksheets("wydruk linia").Range("A1:b1").Copy

    objdata.GetFromClipboard

   temat = objdata.GetText

   Dim silowniki As String

   Worksheets("wydruk linia").Range("A1:H30").Copy

    objdata.GetFromClipboard

  silowniki = objdata.GetText

   With objmail

      .To = "[email protected]"

      .Subject = temat

      .Body = silowniki & varBody

      .NoAging = True

      .Display

   End With

   Set objmail = Nothing

   Set objol = Nothing

End Sub

Z góry dziękuję za wszelką próbę pomocy.

0

Jak chcesz, żeby było ładnie, to musisz (ja przynajmniej tak robiłem, może można prościej) skorzystać z HTML i w nim formatować tabele.
Tutaj masz coś (nie weryfikowałem, czy to działa, a do skryptów, które ja robiłem, nie mam już dostępu):
https://www.example-code.com/[...]/smtp_sendSimpleHtmlEmail.asp

0

Dzięki za poradę ale niestety nie dałem rady.
Za to wymyśliłem coś takiego i działa w 100% tak jak oczekiwałem.

Private Sub Mail()
Dim outlook As Object
Dim newEmail As Object
Dim xInspect As Object
Dim pageEditor As Object
 Dim objdata As DataObject
 Set objdata = New DataObject

  Dim temat As String
   Worksheets("wydruk linia").Range("A1:b1").Copy
    objdata.GetFromClipboard
   temat = objdata.GetText

Set outlook = CreateObject("Outlook.Application")
Set newEmail = outlook.CreateItem(0)

With newEmail
    .To = "mój mail"
    .CC = ""
    .BCC = ""
    .Subject = temat
    .Body = vbCrLf
    .Display

    Set xInspect = newEmail.GetInspector
    Set pageEditor = xInspect.WordEditor

    Worksheets("wydruk linia").Range("A1:g30").Copy

    pageEditor.Application.Selection.Start = Len(.Body)
    pageEditor.Application.Selection.End = pageEditor.Application.Selection.Start
    pageEditor.Application.Selection.PasteAndFormat (wdFormatPlainText)
    .Display
       Set pageEditor = Nothing
    Set xInspect = Nothing

    Dim xInspect1 As Object
Dim pageEditor1 As Object
Set xInspect1 = newEmail.GetInspector
    Set pageEditor1 = xInspect1.WordEditor

Worksheets("plan linia").Range("A1:p30").Copy

    pageEditor1.Application.Selection.Start = Len(.Body)
    pageEditor1.Application.Selection.End = pageEditor1.Application.Selection.Start
    pageEditor1.Application.Selection.PasteAndFormat (wdFormatPlainText)
    .Display
       Set pageEditor1 = Nothing
    Set xInspect1 = Nothing

End With

Set newEmail = Nothing
Set outlook = Nothing

End Sub

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0