توسط این آموزش و با استفاده ماکروهای ساده می توانید تنها با یک کلیک تمام نمودارهای موجود در فایل اکسل در تمام شیتها را به PDF تبدیل نمائید.
[su_note note_color=”#b5ffc3″]
فهرست و دسترسی سریع
- روش اول ، تبدیل نمودارها به فایلهای جداگانه PDF
- روش دوم ، تبدیل همه نمودارها به یک فایل PDF (پیشنهادی)
- روش سوم ، تبدیل نمودارها به عکسهای جداگانه
- مشاهده ویدیو آموزشی
[/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
کسانی که با اکسل آشنایی دارند به راحتی می توانند از ماکروهای بالا استفاده کنند ولی کسانی که حرفه ای نیستند با دیدن ویدیو حتما می توانند انجام دهند 🙂