Excelの全グラフをWordに書式を指定して貼り付けるマクロをVBAで!

スポンサードリンク

Excelで作成したグラフは、ワードなどに貼り付け、最終的には文書にまとめられると思います。

この文書が最後の姿ですので、サイズや形式を整えてきれいに貼り付けたいところです。また、文書作成に時間を使いたいので、この単純な貼り付け作業にはできるだけ時間を裂きたくないという相反する要求もありますよね。

今回はこの、Excelで作成した全グラフをWordにすばやく、かつきれいに貼り付ける作業を効率よく、ささっと片付けてしまう方法を紹介していきます!

さて、今回の問題にどう対処するか?

実はこの問題、ExcelのVBAを使ってマクロを作ると簡単に処理できるんですよ。

Excelの全グラフをWordに書式を指定して貼り付ける作業を効率よく行いたいあなた!

是非今回紹介する方法を参考にしてみてくださいね。
このページの中では、今回紹介するExcelの全グラフをWordに書式を指定して貼り付ける機能を組み込んだExcelファイルをダウンロードできるようにしています。

これを使えば、一からExcelを作り込む必要もありませんよ。ファイルを手にした瞬間、作業スピードは一気に早まります!是非使ってみてくださいね。

では本編スタートです!

スポンサードリンク

『Excelの全グラフをWordに書式を指定して貼り付ける』には?まずは問題を整理しよう!

今回対象とするのは、Excelの全グラフをWordに書式を指定して貼り付けるという作業です。グラフの数が多いと一苦労なこの作業。Excelにまかせて手軽に自動で終わらせます。

この作業を手作業で行うには、

  • Excel上でグラフを選択してコピーする
  • 貼り付け先のワード上で、形式を選択して貼り付けを選択
  • 希望する形式を選び貼り付けを行う
  • 貼り付け後のグラフのサイズを変更する
  • ここまでの作業をグラフの数だけ繰り返す

という手順をとるのが普通なのではないでしょうか。Wordで形式を選択して貼り付けるという作業が面倒なんですよね。Ctrl+Pのショートカットキーを使って貼り付けると書式が選べませんので、手数の多い方法で貼り付けねばなりません。

ひとつふたつのグラフをWordにはりつける位であればなんてことありませんが、グラフの数が多い場合、あまり価値を産まない単純作業である貼り付け作業で日が暮れてしまいます。

ではこの面倒な手順をExcelで自動化してしまいましょう!

『Excelの全グラフをWordに書式を指定して貼り付ける』方針をチェック!

ここでは、Excelの全グラフをWordに書式を指定して貼り付けるという作業をExcelに実施させるためにはどうすればよいかをみていきます。一つひとつ手作業で行うには、上で書いた

この作業を手作業で行うには、

  • Excel上でグラフを選択してコピーする
  • 貼り付け先のワード上で、形式を選択して貼り付けを選択
  • 希望する形式を選び貼り付けを行う
  • 貼り付け後のグラフのサイズを変更する
  • ここまでの作業をグラフの数だけ繰り返す

という手作業が必要でしたよね?

今回はこの手順をExcelのマクロ(VBA)をつかって自動で行っていくことにしましょう。Excelマクロで同じことを行うため、次の手順で処理を行わせます。マクロ実行の前にグラフを貼り付けるためのワードを予め用意しておきますよ。

  • グラフ貼り付け先のWordファイルを選択して開く
  • Excel内のグラフをひとつづつコピー
  • ワードに形式を指定して貼り付け
  • 上記をエクセル内の全シート、全グラフを対象に繰り返す
  • Wordファイルを保存して閉じる

これをVBAで書けば今回のExcelの全グラフをWordに書式を指定して貼り付けるいう作業は一発で一瞬で完了します!しかも処理はプログラムした内容に従って、いつでも何度でも実施できるので、処理を間違ってしまうということもありませんよ!

スポンサードリンク

『Excelの全グラフをWordに書式を指定して貼り付ける』作業をExcelで解決!

ではExcelの全グラフをWordに書式を指定して貼り付ける作業を行う、具体的なマクロの記述をみていきましょうね!VBAで書いたリストは次の通りです!

貼り付け先になるWordファイルが、Excelファイルの保存されているフォルダに保存されていることを想定し、Wordファイルを選択する際に、Wordの保存先のフォルダを探し当てる作業をしなくていいように一工夫しました。

Excelファイルが保存されてるフォルダをカレントディレクトリにして、Wordファイルを開くダイアログボックスを開くと、Excelファイルが保存されているフォルダの内容が表示され、Wordファイルを探す手間が省けます。

このサンプルでは、コピーしたグラフをpngファイル形式でワードに貼り付けているため、.Selection.PasteSpecial DataType:=14とDataTypeを14と指定しています。他の形式で貼り付けたい場合には、14の部分を変更してください。

Wordで形式を選択して貼り付けを行うときに選べる各形式の番号は、bitmapが4、デバイスに依存しないビットマップが5,、拡張メタファイルが9、GIFが17、JPEGが26です。

また、Wordに貼り付けられたグラフは、Excelで作成された大きさに応じたものになっています。このマクロではWord上のグラフの大きさの操作は行いません。

Word上では、グラフは図になっており、ワード上でひとつ図のサイズ調整を行えば、この作業をF4キーで繰り返すことができますので、これを利用してWord上のグラフの大きさを変更してください。

Attribute VB_Name = "Module1"
'***********************************************************
'** 仕事サクサク!定時退社のために EXCEL GO! GO!
'** (URL:https://excelgogo.net/)
'** 是非ご活用ください♪
'***********************************************************
Sub ブック内にある全てのグラフをワードに貼り付ける()
Dim i As Integer, j As Integer
Dim code As String
Dim wordfilename As String
'
On Error GoTo Error1 'エラーが生じたらError1へ
Application.DisplayAlerts = False '確認画面を「非表示」に
Application.ScreenUpdating = False '画面の遷移をストップ
'
'アクティブなワークブックが保存されている場所をカレントディレクトリにします。
'ネットワークドライブ接続にも対応するよう、接続しているドライブを
'カレントドライブにします。
ChDrive ActiveWorkbook.Path
ChDir ActiveWorkbook.Path
'
'グラフを貼り付けるワードファイルをダイアログボックスを使って指定します。
wordfilename = Application.GetOpenFilename _
 ("Microsoft word,*.docx?, Microsoft word,*.docm?, Microsoft word,*.doc?", _
 , "グラフを貼り付けるワードファイルを選択", , "false")
If wordfilename = "False" Then
    MsgBox "正しくワードファイルを選択してください。ワードファイルがない場合は,マクロを実行する前に作成してください。マクロを終了します "
    GoTo Error2
End If
'
'wordが使用できるように、wordのインスタンスを作成します。
Set objWord = CreateObject("word.application")
'
With objWord
    Visible = True
    WindowState = wdWindowStateMaxmize
    .Documents.Open wordfilename
    Set objWordDoc = .Activedocument
End With
'
For i = 1 To Sheets.Count
    Worksheets(i).Select
    code = ActiveSheet.Name
'
    If ActiveSheet.ChartObjects.Count > 0 Then
        With objWord
            With .Selection
            'グラフの数だけカーソルを移動
            .Move Count:=objWordDoc.Characters.Count
            'カーソル位置に段落追加
            .Insertparagraphafter
            '右へカーソルを移動
            .moveright
            '右寄せ設定
            .Paragraphs.Alignment = wdalignParagraphleft
            'Excelのシート名をワード内に記述…目印のため
            .Typetext code
            'カーソル位置に段落を追加
            .Insertparagraphafter
            'カーソルを右に移動
            .moveright
            End With
        End With
        For j = 1 To ActiveSheet.ChartObjects.Count
            Worksheets(i).ChartObjects(j).Select
            Selection.Copy
            With objWord
            '***********************************************************
                '好みの形式をDataTypeで指定して貼り付け
                'png=14,bitmap=4,デバイスに依存しないビットマップ=5,
                '拡張メタファイル=9,GIF=17,JPEG=26
                .Selection.PasteSpecial DataType:=14
            '***********************************************************
                With .Selection
                'カーソルを右に移動
                .moveright
                End With
            End With
        Next
    End If
'
Next
'
objWordDoc.Close savechanges:=True  'ワードファイルを保存して閉じる
'
Error1:
objWord.Quit
Set objWord = Nothing
Set objWordDoc = Nothing
'
Error2:
Application.DisplayAlerts = True  '確認画面を「表示」に
Application.ScreenUpdating = True  '画面の遷移を再開
'
End Sub

まとめ

今回は、『Excelの全グラフをWordに書式を指定して貼り付ける』という面倒な作業をExcelのマクロをつかって自動化し、作業を効率化する方法を紹介しました。

・Excel上でグラフを選択してコピーする
・貼り付け先のワード上で、形式を選択して貼り付けを選択
・希望する形式を選び貼り付けを行う
・貼り付け後のグラフのサイズを変更する
・ここまでの作業をグラフの数だけ繰り返す

という地味で辛い作業を、

・グラフ貼り付け先のWordファイルを選択して開く
・Excel内のグラフをひとつづつコピー
・ワードに形式を指定して貼り付け
・上記をエクセル内の全シート、全グラフを対象に繰り返す
・Wordファイルを保存して閉じる

という手順で操作を行うマクロにするところがポイントです。

下で紹介するExcelファイルも是非お使いくださいね。プログラムを書く時間も短縮できると思います。

 

ある機能をExcelで実現するとき、その方法は一つだけとは限りません。

ExcelVBAで使用できる機能をフルに使ってシンプルに作ることもできます。ただこれにはそれなりの勉強が必要。すぐには使えず、今すぐ問題を解決したいとい状況にはあいません。ですので、このブログで紹介するマクロは、できるだけ簡単なもの、VBAにそう詳しくなくても読めそうなもの、手を加えやすいものになるように心がけています。

マクロって難しそう、と敬遠していた方にマクロって意外とお手軽ね!と感じていただき、これを応用すればあの作業も自動化できるかも!と次のステップやアクションにつなげていただければと思います。

Excelのスキルを一気に向上させて、ライバルに差をつけたい、仕事を一気にさばいてスピードアップしたい、スキルを身に着けて転職や就職に役立てたいと思ったあなた!ぜひ下のボタンをクリックしてください!
募集締め切りが迫っているので、期間限定で「短期間で実力の向上が見込めるお手頃な方法」を紹介していますよ。

ホントは管理人Goも早く知りたかった!オンラインブートキャンプで、
見やすいデータをより早く仕上げる Excel術をマスターしよう!

 

『Excelの全グラフをWordに書式を指定して貼り付ける』Excelマクロをプレゼント

今回紹介した

  • グラフ貼り付け先のWordファイルを選択して開く
  • Excel内のグラフをひとつづつコピー
  • ワードに形式を指定して貼り付け
  • 上記をエクセル内の全シート、全グラフを対象に繰り返す
  • Wordファイルを保存して閉じる

という機能をもたせたマクロを実装したExcelファイル、プログラムを記載したbasファイル
が下からダウンロードできます。

 

お好きな形式のファイルをダウンロードして、実際に動かしてみたり、あなたの課題にあわせてExcelを調整して作業時間短縮、効率化に役立ててみてください!

basファイルって何?どう使うの?という方やマクロはどのようにして実行するの?と疑問に思った方は、関連記事もチェックしてみてくださいね。


 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter でExcel GO! GO!をフォローしよう!

スポンサードリンク

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

話題をチェック!

  1. 2018-11-1

    Excelマクロ(VBA)で複数のシート上のグラフに同一の処理を行うには?

    Excelファイル内に複数のシートがあり、この中にグラフがいくつも入っているとします。 これら…
  2. 2018-9-30

    Excelの関数を使ったデータ比較法!INDIRECTとMATCHを活用する!

    最新データと一週間前のデータにどんな違いがあるのか比較してチェックしたい! でも、ひとつひとつ…
  3. 2018-7-16

    Excel マクロ(VBA)でグラフ(散布図)を大量自動作成!

    Excelはグラフを簡単につくれるのも魅力ですが、つくらなければいけないグラフが多いと、この作業も大…
ページ上部へ戻る