How to save Excel chart as image, copy or export it to Word & PowerPoint

In this article you will learn how to save your Excel chart as an image (.png, .jpg, .bmp etc. ) or export it to another file such as a Word document or PowerPoint presentation.

Microsoft Excel is one of the most powerful tools for data analysis that provides plenty of features and special options to visualize your data. Charts (or graphs) is one of such options and creating a chart in Excel is as easy as selecting your data and clicking an appropriate chart icon.

But what has strengths usually has it weaknesses. The weak point of Excel charts is the lack of an option to save them as images or to export to another file. It would be really nice if we could simply right-click a graph and see something like "Save as image" or "Export to". But since Microsoft did not bother to create such features for us, we'll figure something out on our own :)

In this article I will show you 4 ways of saving an Excel chart as an image, so that you can insert it in other Office applications like Word and PowerPoint, or use to create some nice infographics:

Copy a chart to a graphics program and save as picture

A friend of mine told me once how she usually copies her Excel charts to Paint. What she does is create a chart and click PrintScreen, then open Paint and pastes the image of the entire screen. After that she crops the redundant screen areas and saves the remaining part to a file. If you do it this way too, forget about it and never use this childish method again! There is a quicker and smarter way :-)

As an example, I created a nice 3-D Pie graph in my Excel 2010 that visually represents the demographics of our web site's visitors and now I want to export this Excel chart as image. What we do is as follows:

  1. Right-click somewhere on the chart border and click Copy. Do not place the cursor within the chart; this may select individual elements rather than the whole graph and you won't see the Copy command.
    Right-click on the chart border to copy it
  2. Open Paint and paste the chart by clicking the Paste icon on the Home tab or pressing Ctrl + V:
    Paste the chart to Paint
  3. Now all that is left to do is save your chart as an image file. Click the "Save as" button and choose from available formats (.png, .jpg, .bmp and .gif). For more options, click the "Other formats" button at the end of the list.
    Save your chart as a .png, .jpg, .bmp and .gif image

It is that simple! In a similar fashion you can save your Excel chart to any other graphics painting program.

Export an Excel chart to Word and PowerPoint

If you need to export an Excel chart to some other Office application such as Word, PowerPoint or even Outlook, the best way is to paste it directly from the clipboard:

  1. Copy your chart as described in step 1 above.
  2. Click in your Word document or PowerPoint presentation where you want to paste the chart and press Ctrl + V. Instead of Ctrl + V, you can right-click anywhere in the file and you will see a handful of additional Paste Options to choose from:
    Paste an Excel chart to a Word document

The main advantage of this method is that it allows you to export a fully-functional Excel chart to another file, rather than a mere image. The graph will retain the connection with the original Excel worksheet and refresh automatically whenever your Excel data are updated. In this way, you won't need to re-copy the chart with each data change.

Save a chart to Word and PowerPoint as image

In Office 2007, 2010 and 2013 applications, you can also copy an Excel chart as an image. In this case, it will behave as a usual picture and won't update. For example, let's export our Excel chart to a Word 2010 document.

  1. Copy the chart from your Excel workbook, switch to your Word document, place the cursor where you want to inset the graph, and then click on a tiny black arrow at the bottom of the Paste button residing on the Home tab:
    Click the Paste button for Paste Special options
  2. You will see the "Paste Special..." button as shown in the screenshot above. Clicking it will open the Paste Special dialog and you will see a number of available image formats including Bitmap, GIF, PNG and JPEG.
    Save your chart to Word as a Bitmap, GIF, PNG and JPEG image
  3. Choose one of the formats and click OK.

Probably the Paste Special option is available in earlier Office versions as well, but I haven't used them for quite a while, that is why cannot state with certainty :)

Save all charts in an Excel workbook as images

The methods we have discussed so far work well if you have one or a couple of charts. But what if you need to copy all charts in the entire Excel workbook? It would take quite a lot of time to copy / paste them individually. Good news is that you needn't do that! Here's how you can save all charts in a workbook at once:

  1. When all of your charts are ready, switch to the File tab and click the Save As button.
  2. The Save As dialog will open and you choose Web Page (*.htm;*html) under "Save as type". Also, make sure the "Entire Workbook" radio button next to Save is selected, as shown in the screenshot:
    Save an Excel chart to Word as a web page
  3. Choose the destination folder where you want to save your files and click the Save button.

The .png images of all charts will be copied to that folder along with html files. The next screenshot shows the content of the folder where I saved my workbook. The book contains 3 worksheets with a graph in each and as you can see, all the three .png images are in place!
All charts in a workbook are saves as .png images

As you know, PNG is one of the best image-compression formats without any loss of picture quality. If you prefer some other formats for your pictures, you can easily convert them to .jpg, .gif, .bmp etc.

Save a chart as image using a VBA macro

If you need to export your Excel charts as pictures on a regular basis, you can automate this work using a VBA macro. The best part is that a variety of such macros already exist, so there is no need to reinvent the wheel :)

For instance, you can use the tried-and-true solution published by Jon Peltier on his blog. The macro is as simple as this:
ActiveChart.Export "D:\My Charts\SpecialChart.png"

This line of code lets you export the selected chart as a .png image to the specified folder. Even if you have never written a single macro before, you can create your first one right now in 4 easy steps.

Before you take on the macro, create a folder where you want to export the chart. In our case, it is My Charts folder on disk D. Well, all preparations are done, let's take on the macro.

  1. In your Excel workbook, switch to the Developer tab and click on the Marcos icon in the Code group.
    Click on the Marcos icon on the Developer tab

    Note. If this is the first time you are creating a macro, most likely the Developer tab won't be visible in your workbook. In this case, switch to the File tab, click Options > Customize Ribbon. In the right hand part of the window, in the Main Tabs list, select Developer, and then click OK.

  2. Give your macro a name, for example SaveSelectedChartAsImage and choose to enable it in your current workbook only:
    Name your macro and click Create
  3. Click the Create button and you will have the Visual Basic Editor open with the outlines of a new macro already written for you. Copy the following macro in the second line:

    ActiveChart.Export "D:\My Charts\SpecialChart.png"
    This macro saves the selected chart as a .png image to the specified folder

  4. Close the Visual Basic Editor and click the Save As button on the File tab. Choose to save your workbook as Excel Macro-Enabled Workbook (*.xlsm). And that's all, you did it! :)

Now let's run the newly created macro to see how it works. Oh wait... there's one more thing for you to do. You should select the Excel chart that you want to export because as you remember, our macro copies only the active chart. Click anywhere on the chart's border and if you see a light gray border surrounding it, then you did it correctly and your entire graph is selected:
Select the chart before running a macro

Switch to the Developer tab again and click on the Macros icon. This will open a list of macros in your workbook. All you need to do is to select SaveSelectedChartAsImage and click the Run button:
Run the macro

Now open your destination folder and check if the .png image of your chart is there. In a similar way you can save a picture in other formats. In your macro, you will just need to replace .png with .jpg or .gif like this:

ActiveChart.Export "D:\My Charts\SpecialChart.jpg"

Tip. If you want to save an Excel worksheet as a JPG, PNG, or GIF image, read this guide.

That's all for today, hope you find the information helpful. Thanks for reading!

47 comments

  1. Thank you. Shot a lot bru

  2. Hi, Can we do email notification (via workflow) using graphs in the email body? The graphs are results of tables and data inputs from a shared file in sharepoint. Is this possible?

  3. Hi, I was wondering. Could someone extract just the pie chart and not the whole square of the graph with the informations, because every time I try to select it, it doesn't have the copy option, it has it only on the whole square. I want to put the charts in specific places on an image of a map in order to show some statistic differences between the areas.

  4. Thank you for this straightforward explanation.
    Can a chart be exported as a vector file?

    • Hello!
      Microsoft Excel does not provide an opportunity to save a chart to a file.
      However, you can create a new PowerPoint presentation and insert your chart in a new blank slide via the clipboard (CTRL+C -> CTRV+V).
      Then save your presentation containing the chart in XPS format with the help of File->Export.
      Perhaps, that will help you to solve your problem.

  5. i can export an image from Excel to VBA but the image appears to be checked out on sharepoint. Is there a way to checkin the image on sharepoint as well

  6. The method i like the most that is not here is save the page as pdf and then crop it! Thus, the image is a vector image very good for articles...

  7. Hi,

    When I run macro to copy the chart image from excel to word. Sometime, in another machine it's cause the error: CopyPicture method of range class failed.

    So, can you help me with any solutions.

    THANKS,

  8. thanks its very useful for me.

  9. Very useful indeed and so clearly expressed - many thanks

  10. Guess 1 way to save time would be able to take screenshot / snip of selected chart. A method to copy selected chart as image without requiring paint or snipping tool would be useful.any macro to copy selected chart as image would be most effective method.

  11. Simple and functional, thanks :)

  12. nice command for excel sheet sir

  13. i cant copy an excel chart anywhere. I get the blank chart but missing the data points
    help please

  14. * I added code to (A) save the image with the name of the Excel file that originates it, and (B) automatically append a number to handle multiple images from the same Excel file.
    * Amend the path "C:\Users\EJB\Documents" to your liking.

    Attribute VB_Name = "Module1"
    Sub SaveSelectedChatAsImage()
    ' Within Excel you need to set a reference to the VB script run-time library.
    ' The relevant file is usually located at \Windows\System32\scrrun.dll
    ' To reference this file, load the Visual Basic Editor (ALT+F11)
    ' Select Tools > References from the drop-down menu
    ' A listbox of available references will be displayed
    ' Tick the check-box next to 'Microsoft Scripting Runtime'
    ' The full name and path of the scrrun.dll file will be displayed below the listbox
    ' Click on the OK button.
    ' fso: to get the name of the Excel file
    Dim fso As New Scripting.FileSystemObject
    ' FS: counter to keep track of multiple images
    Dim LocalCounter%, FS
    Set FS = CreateObject("Scripting.FileSystemObject")
    LocalCounter = 0
    Do While FS.FileExists("C:\Users\EJB\Documents\" _
    & fso.GetBaseName(ActiveWorkbook.Name) & "_" _
    & "(" & LocalCounter & ").png") = True
    LocalCounter = LocalCounter + 1
    Loop
    ActiveChart.Export "C:\Users\EJB\Documents\" _
    & fso.GetBaseName(ActiveWorkbook.Name) & "_" _
    & "(" & LocalCounter & ").png"
    End Sub

  15. Thanks so much! I used the web page option and it worked perfectly for what I needed.

  16. Thanks a bunch. This was an easy to understand great way to conveniently save it as whatever type of image you want. I personally used method number 3, but they are all great.

  17. Hi...
    I want to Export Image, which Attached Excel sheet to jpeg formate save to any folder.

    Please help me make micro.

    simple process copy Attached Image and Past paint and then save.

  18. Watching my video in my channel.

    "https://www.youtube.com/watch?v=Cv6Aa-8zbbE"

    Thank you guys!

  19. "https://www.youtube.com/watch?v=Cv6Aa-8zbbE"

  20. Hi guys?

  21. I have one question, I'd like to export the chart to file of the format .bitmap it is possible? Someone know how do this on vba? Glad to be here! Thank you!

  22. I get the same error as cpurandarrao :

    (Error 91)
    fix Object variable not set

    ActiveChart.Export "C:\$user\data\Grafiek_" _
    & "(" & LocalCounter & ").jpg"

    Would appreciate a solution

  23. I have several charts to save at once. Can I do it. Also suggest how to custom name it

    regards

    cpurandar

  24. I tried to save charts from excel sheet but came across a bug

    (Error 91)
    fix Object variable not set

    Please inform how to fix it

    regards

    cpurandarrao

  25. Is there a way to make the "picture" graph look a lot sharper? It doesn't look as good as if you copy and paste from Excel to Word.

  26. Thanks a lot.

    S.Karthikeyan

  27. Hi,

    I love this tutorial but what I wish to achieve is to print current selection of cells and not just a graph. Kindly suggest.

    • Hi Ayoola,

      Thank you for your feedback. To fulfill your task, please open the worksheet, press the PrintScreen button on the keyboard. Then open any Image Editor, e.g. Paint, press Ctrl + V to paste the image from the clipboard and then crop it leaving only the necessary part of the screenshot.

  28. Thank you very much for this. Was very useful to me.

  29. Thanks a lot. This helped me.

  30. Great! thanks.

  31. Usefull!

  32. I have the same question as lucas, I export my file, but is there a way to increment the file name so it does not save over the prior one?

    • Hello Kyle,

      I have to ask the same question that I asked of Lucas earlier. Please let me know whether you need to save several charts from one worksheet during one session (i.e. without closing the workbook) or do you need a general solution?

      • Alexander,
        Let's start with the former. Please describe how to increment the filename for one Excel sheet.
        Thanks

        • Try something like this.

          Dim LocalCounter%, FS

          Set FS = CreateObject("Scripting.FileSystemObject")

          LocalCounter = 0
          Do While FS.FileExists("D:\My Charts\SpecialChart_" _
          & "(" & LocalCounter & ").jpg") = True
          LocalCounter = LocalCounter + 1
          Loop
          ActiveChart.Export "D:\My Charts\SpecialChart_" _
          & "(" & LocalCounter & ").jpg"

          • thanks joe - that worked a treat :-)

          • I second! This works great!

  33. Is there a way to then revert from a picture/image file (let's say *.jpg) and import/back to excel? Thanks!

    • You can do this using some OCR program. Nearly all of them can scan and recognize .jpg, .png and other images. If this does not work, then you will need to print out the picture and scan it.

      • Thanks Alexander!

  34. So like one of the methods totally worked. Been preparing for IGCSE ICT and all. Thank you so much.

  35. The solution with the macro works very well. However, do you have a way to add the increment in the destination name to be able to save many files one after each other and not having them saving over the last one.

    • Hi Lukas,

      We do not have a ready-to-use macro. But I think it won't be a big problem to write one.

      Please specify whether you need to save several charts from one worksheet during one session (i.e. without closing the workbook) or do you need a general solution? The former will be pretty easy while the latter might be challenging.

    • Sir,
      My query is to all Experts, I have some sort of Data in A2 to D10 in Sheet1 (Don't have Chart) & I want to make a macro button for copying in paint & save in png format in particular Folder (E:\Shahzad\Send\) by the name of Cell A1 (Name mention is in A1) & after saving file it will open.
      Can any one suggest.
      Thanks

Post a comment



Thank you for your comment!
When posting a question, please be very clear and concise. This will help us provide a quick and relevant solution to
your query. We cannot guarantee that we will answer every question, but we'll do our best :)