تبدیل نمودار اکسل به PDF

تمام نمودارهای فایل اکسس را به PDF تبدیل کنید !

تبدیل نمودار اکسل به PDF

توسط این آموزش و با استفاده ماکروهای ساده می توانید تنها با یک کلیک تمام نمودارهای موجود در فایل اکسل در تمام شیتها را به PDF تبدیل نمائید.

[su_note note_color=”#b5ffc3″]

فهرست و دسترسی سریع

[/su_note]

[sta_anchor id=”method1″ /]

انتقال تمام نمودارهای موجود در فایل اکسل به فایلهای جداگانه PDF

1- فایل اکسل را باز کنید

2- با زدن کلیدهای Alt + F11 وارد محیط کد نویسی شوید .

3- در فضای خالی سمت چپ کلیک راست نمائید و Insert module کلیک کنید

4- محتویات کد زیر را در آنجا قرار دهید .

5- به محیط اکسل برگردید و یک شکلک Shape درون اکسل قرار دهید .

6- روی شکلک کلیک راست کرده و گزینه OfficebazExportAllGraphsToMultyPDF را انتخاب نمائید.

7- کار تمام است و در محلی که فایل اکسل شما قرار دارد، فایلهای PDF ایجاد شده است .

Sub OfficebazExportAllGraphsToMultyPDF()

    Dim ch As Chart
    Dim objChartObject As ChartObject
    Dim ws As Worksheet
    Dim strExportPath As String
    Dim strFileName As String
    Dim lngWSChartsCount As Long
    Dim lngChartSheetsCount As Long



    strExportPath = ThisWorkbook.Path    'Change if you want different path



    'Export charts from worksheets
    lngWSChartsCount = 0
    For Each ws In Worksheets
    ws.Activate
    


        For Each objChartObject In ws.ChartObjects
            objChartObject.Activate
            Set ch = objChartObject.Chart
            ws.Activate
         
            On Error Resume Next
            strFileName = ch.ChartTitle.Text & ".pdf"
            ch.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strExportPath & "\" & strFileName
            If Err <> 0 Then
                Err.Clear
                strFileName = ch.ChartTitle.Text & ".pdf"
                ch.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strExportPath & "\" & strFileName
                If Err = 0 Then
                    lngWSChartsCount = lngWSChartsCount + 1
                End If
            Else
                lngWSChartsCount = lngWSChartsCount + 1
            End If
            On Error GoTo 0
            strFileName = vbNullString
        Next objChartObject
    Next ws


    
    Call MsgBox(lngWSChartsCount & " charts from worksheets and " & lngChartSheetsCount & " chart sheets exported at " & strExportPath, vbInformation, "Charts Export Result")
End Sub

[sta_anchor id=”method2″ /]

انتقال همه نمودارها به یک فایل PDF

1- مراحل یک تا 4 را طبق روش قبل انجام دهید و از کدهای زیر استفاده نمائید .

2- یک فایل PDF حاوی تمامی نمودارها در مسیر فایل اکسل شما قرار می گیرد .

Sub OfficebazExportAllGraphToOnePdf()
Dim i As Long, j As Long, k As Long
Dim adH As Long
Dim Rng As Range
Dim FilePath As String: FilePath = ThisWorkbook.Path & "\"
Dim sht As Worksheet, shtSource As Worksheet, wk As Worksheet

Sheets.Add After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = "ALL"
Set sht = ActiveSheet

'Excluding ALL tab, copying all charts from all tabs to ALL
For Each wk In Worksheets
    If wk.Name <> "ALL" Then
        Application.DisplayAlerts = False
            j = wk.ChartObjects.Count
                For i = 1 To j
                    wk.ChartObjects(i).Activate
                    ActiveChart.ChartArea.Copy
                    sht.Select
                    ActiveSheet.Paste
                    sht.Range("A" & 1 + i & "").Select
                 Next i
        Application.DisplayAlerts = True
    End If
Next


'To set the constant cell vertical increment for separate pages
adH = 40
k = 0
j = sht.ChartObjects.Count

Application.PrintCommunication = True 'this will allow page settings to update
'To set page margins, adding some info about the file location, tab name and date
With ActiveSheet.PageSetup
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .Orientation = xlLandscape
        .LeftHeader = "Date generated : " & Now
        .CenterHeader = ""
        .RightHeader = "File name : " & ActiveWorkbook.Name
        .LeftFooter = "File location : " & FilePath & ThisWorkbook.Name
        .CenterFooter = ""
        .RightFooter = ""
        .FitToPagesWide = 1
End With

'adjusting page layout borders
sht.VPageBreaks.Add sht.[N1]
For i = 40 To j * 40 Step 40
sht.HPageBreaks.Add Before:=sht.Cells(i + 1, 1)
Next i
Columns("A:A").EntireRow.RowHeight = 12.75
Rows("1:1").EntireColumn.ColumnWidth = 8.43

For i = 1 To j
Set Rng = ActiveSheet.Range("A" & (1 + k * adH) & " :M" & (40 + k * adH) & "")
    With ActiveSheet.ChartObjects(i)
        .Height = Rng.Height
        .Width = Rng.Width
        .Top = Rng.Top
        .Left = Rng.Left
    End With
    ActiveSheet.PageSetup.PrintArea = "$A$1:$M" & (40 + k * adH) & ""
 k = k + 1
Next i

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FilePath & ActiveWorkbook.Name & "." & ActiveSheet.Name, Quality:=xlQualityMinimum, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Application.DisplayAlerts = False
ThisWorkbook.Sheets("ALL").Delete
Application.DisplayAlerts = True

Application.ScreenUpdating = True
End Sub

[sta_anchor id=”method3″ /]

روش آخر ، انتقال نمودارها و تبدیل آنها به تصاویر JPG

1- مطابق روشهای قبلی پیش بروید

2- کد های زیر را در فایل اکسل قرار دهید .

   Sub OfficebazExportAllGraphToJPG()

    Dim objShell As Object
    Dim objWindowsFolder As Object
    Dim strWindowsFolder As String
    Dim objSheet As Excel.Worksheet
    Dim objChartObject As Excel.ChartObject
    Dim objChart As Excel.Chart

    'Select a Windows folder
    Set objShell = CreateObject("Shell.Application")
    Set objWindowsFolder = objShell.BrowseForFolder(0, "Select a Windows folder:", 0, "")

    If Not objWindowsFolder Is Nothing Then
       strWindowsFolder = objWindowsFolder.self.Path & "\"

       For i = ThisWorkbook.Worksheets.Count To 1 Step -1
           Set objSheet = ThisWorkbook.Worksheets(i)

           If objSheet.ChartObjects.Count > 0 Then
              For Each objChartObject In objSheet.ChartObjects
                  Set objChart = objChartObject.Chart
                  objChart.Export strWindowsFolder & objChart.Name & ".jpg"
              Next
          End If
       Next

       'Open the windows folder
       Shell "Explorer.exe" & " " & strWindowsFolder, vbNormalFocus
   End If

   End Sub

کسانی که با اکسل آشنایی دارند به راحتی می توانند از ماکروهای بالا استفاده کنند ولی کسانی که حرفه ای نیستند با دیدن ویدیو حتما می توانند انجام دهند 🙂

[sta_anchor id=”video” /]

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا