نصيحة: اللغات الأخرى مترجمة من قبل Google. يمكنك زيارة English نسخة من هذا الرابط.
تسجيل الدخول
x
or
x
x
التسجيل
x

or

كيفية لصق نطاق من الخلايا في نص الرسالة كصورة في Excel؟

إذا كنت بحاجة إلى نسخ نطاق من الخلايا ولصقه كصورة في نص الرسالة عند إرسال بريد إلكتروني من Excel. كيف يمكنك التعامل مع هذه المهمة؟

قم بلصق نطاق من الخلايا في نص البريد الإلكتروني كصورة بكود VBA في Excel


قم بلصق نطاق من الخلايا في نص البريد الإلكتروني كصورة بكود VBA في Excel


قد لا توجد طريقة أخرى جيدة لحل هذه المهمة ، يمكن أن يساعدك رمز VBA في هذه المقالة. يرجى القيام بذلك:

1. تمكين الورقة التي تريد نسخها ولصقها كصورة ، اضغط باستمرار على ALT + F11 مفاتيح لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.

2. انقر إدراج > وحدة، ولصق التعليمة البرمجية التالية في وحدة نافذة او شباك.

رمز VBA: الصق مجموعة من الخلايا في نص البريد الإلكتروني كصورة:

Sub sendMail()
        Dim TempFilePath As String
        Dim xOutApp As Object
        Dim xOutMail As Object
        Dim xHTMLBody As String
        Dim xRg As Range
        On Error Resume Next
        Set xRg = Application.InputBox("Please select the data range:", "KuTools for Excel", Selection.Address, , , , , 8)
        If xRg Is Nothing Then Exit Sub
        With Application
            .Calculation = xlManual
            .ScreenUpdating = False
            .EnableEvents = False
        End With
        Set xOutApp = CreateObject("outlook.application")
        Set xOutMail = xOutApp.CreateItem(olMailItem)
        Call createJpg(ActiveSheet.Name, xRg.Address, "DashboardFile")
        TempFilePath = Environ$("temp") & "\"
        xHTMLBody = "<span LANG=EN>" _
                & "<p class=style2><span LANG=EN><font FACE=Calibri SIZE=3>" _
                & "Hello, this is the data range that you want:<br> " _
                & "<br>" _
                & "<img src='cid:DashboardFile.jpg'>" _
                & "<br>Best Regards!</font></span>"
        With xOutMail
            .Subject = ""
            .HTMLBody = xHTMLBody
          .Attachments.Add TempFilePath & "DashboardFile.jpg", olByValue
            .To = " "
            .Cc = " "
            .Display
        End With
End Sub
Sub createJpg(SheetName As String, xRgAddrss As String, nameFile As String)
    Dim xRgPic As Range
    ThisWorkbook.Activate
    Worksheets(SheetName).Activate
    Set xRgPic = ThisWorkbook.Worksheets(SheetName).Range(xRgAddrss)
    xRgPic.CopyPicture
    With ThisWorkbook.Worksheets(SheetName).ChartObjects.Add(xRgPic.Left, xRgPic.Top, xRgPic.Width, xRgPic.Height)
        .Activate
        .Chart.Paste
        .Chart.Export Environ$("temp") & "\" & nameFile & ".jpg", "JPG"
    End With
    Worksheets(SheetName).ChartObjects(Worksheets(SheetName).ChartObjects.Count).Delete
Set xRgPic = Nothing
End Sub

ملاحظة:: في الكود أعلاه ، يمكنك تغيير محتوى الجسم وعنوان البريد الإلكتروني لحاجتك.

3. بعد إدخال الرمز ، اضغط F5 مفتاح لتشغيل هذه التعليمة البرمجية ، يظهر مربع حوار لتذكيرك بتحديد نطاق البيانات الذي تريد إدراجه في نص البريد الإلكتروني كصورة ، راجع لقطة الشاشة:

4. ثم اضغط OK زر، و a الرسالة يتم عرض نافذة ، تم إدراج نطاق البيانات المحدد في الجسم كصورة ، انظر قطة:

ملاحظة:: في ال الرسالة يمكنك أيضًا تغيير محتوى الجسم وعناوين البريد الإلكتروني في الحقلين إلى ونسخة حسب الحاجة.

5. أخيرا، انقر فوق إرسال زر لإرسال هذا البريد الإلكتروني.


ملاحظة:: إذا كنت بحاجة إلى لصق نطاقات متعددة من أوراق عمل مختلفة ، فيمكنك استخدام رمز VBA أدناه لصالحك:

أولاً ، يجب عليك تحديد النطاقات المتعددة التي تريد إدراجها في نص البريد الإلكتروني كصور ، ثم قم بتطبيق الكود التالي:

رمز VBA: الصق نطاقات متعددة من الخلايا في نص البريد الإلكتروني كصورة:

Sub sendMail()
    Dim TempFilePath As String
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xHTMLBody As String
    Dim xRg As Range
    Dim xSheet As Worksheet
    Dim xAcSheet As Worksheet
    Dim xFileName As String
    Dim xSrc As String
    On Error Resume Next
    TempFilePath = Environ$("temp") & "\RangePic\"
    If Len(VBA.Dir(TempFilePath, vbDirectory)) = False Then
      VBA.MkDir TempFilePath
    End If
    Set xAcSheet = Application.ActiveSheet
    For Each xSheet In Application.Worksheets
        xSheet.Activate
        Set xRg = xSheet.Application.Selection
        If xRg.Cells.Count > 1 Then
            Call createJpg(xSheet.Name, xRg.Address, "DashboardFile" & VBA.Trim(VBA.Str(xSheet.Index)))
        End If
    Next
    xAcSheet.Activate
    With Application
        .Calculation = xlManual
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    Set xOutApp = CreateObject("outlook.application")
    Set xOutMail = xOutApp.CreateItem(olMailItem)
    xSrc = ""
    xFileName = Dir(TempFilePath & "*.*")
    Do While xFileName <> ""
        xSrc = xSrc + VBA.vbCrLf + "<img src='cid:" + xFileName + "'><br>"
        xFileName = Dir
        If xFileName = "" Then Exit Do
    Loop
    xHTMLBody = "<span LANG=EN>" _
                & "<p class=style2><span LANG=EN><font FACE=Calibri SIZE=3>" _
                & "Hello, this is the data range that you want:<br> " _
                & "<br>" _
                & xSrc _
                & "<br>Best Regards!</font></span>"
    With xOutMail
        .Subject = ""
        .HTMLBody = xHTMLBody
        xFileName = Dir(TempFilePath & "*.*")
        Do While xFileName <> ""
            .Attachments.Add TempFilePath & xFileName, olByValue
            xFileName = Dir
        If xFileName = "" Then Exit Do
        Loop
        .To = " "
        .Cc = " "
       .Display
    End With
    If VBA.Dir(TempFilePath & "*.*") <> "" Then
        VBA.Kill TempFilePath & "*.*"
    End If
End Sub
Sub createJpg(SheetName As String, xRgAddrss As String, nameFile As String)
    Dim xRgPic As Range
    ThisWorkbook.Activate
    Worksheets(SheetName).Activate
    Set xRgPic = ThisWorkbook.Worksheets(SheetName).Range(xRgAddrss)
    xRgPic.CopyPicture
    With ThisWorkbook.Worksheets(SheetName).ChartObjects.Add(xRgPic.Left, xRgPic.Top, xRgPic.Width, xRgPic.Height)
        .Activate
        .Chart.Paste
        .Chart.Export Environ$("temp") & "\RangePic\" & nameFile & ".jpg", "JPG"
    End With
    Worksheets(SheetName).ChartObjects(Worksheets(SheetName).ChartObjects.Count).Delete
Set xRgPic = Nothing
End Sub


أدوات إنتاجية Excel

Kutools لـ Excel - أفضل أداة إنتاجية للمكاتب

  • أحضر 300 ميزات متقدمة قوية إلى Excel ، وتمكنك من القيام بذكاء وأسرع وأفضل.
  • لم تعد بحاجة إلى حفظ الصيغ ورموز VBA ، امنح عقلك قسطًا من الراحة من الآن فصاعدًا.
  • كن خبيرًا في Excel في دقائق 3 ، يمكن إجراء العمليات المعقدة والمتكررة في ثوانٍ ،
  • قلل من آلاف عمليات لوحة المفاتيح والماوس كل يوم ، قل وداعًا للأمراض المهنية الآن.
  • 110,000 من الأشخاص المؤثرين للغاية واختيار 300 + للشركات ذات الشهرة العالمية.
  • 60-day ميزات كاملة تجريبية مجانية. 60 يوم استعادة الاموال الضمانات. سنوات 2 من الترقية المجانية والدعم.

علامة تبويب Office - توفر واجهة مبوبة لـ Office ، واجعل عملك أكثر سهولة.

  • تمكين تحرير علامات التبويب والقراءة في Word و Excel و PowerPoint و Publisher و Access و Visio و Project.
  • افتح مستندات متعددة وقم بإنشائها في علامات تبويب جديدة لنفس النافذة ، وليس في نوافذ جديدة.
  • يزيد إنتاجيتك بنسبة 50٪ ، ويقلل مئات نقرات الماوس لك كل يوم!
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    greg horton · 5 months ago
    This is awesome, I love it! Quick question. I see that it is adding a border to the image. Is there a way to generate without a border? Thanks in advance!
    • To post as a guest, your comment is unpublished.
      Ian Wildman · 4 months ago
      I'd love to know how to paste without generating a border as well. This code is awesome, super intuitive and straightforward. Thank you!
  • To post as a guest, your comment is unpublished.
    Piotrek · 1 years ago
    wyrzuca mi błąd w linijce "Set xOutMail = xOutApp.CreateItem(olMailItem)" olMailItem - nie zdefiniowana
    oraz ".Attachments.Add TempFilePath & "DashboardFile.jpg", olByValue" olByValue - nie zdefiniowana