連載
» 2016年01月05日 05時00分 公開

VBA/マクロ便利Tips:Excelの表をWordに貼り付ける方法とWordのテキストをExcelのセルに埋め込む方法 (2/2)

[薬師寺国安,PROJECT KySS]
前のページへ 1|2       

Wordの文書データをExcelに取り込む

 「Sample.docx」という文章を入力したWordファイルを用意しておく。フォルダーは、このサンプルでは、「K:\Excel_Word_VBA_Tips」というフォルダーに配置しているが、このフォルダーは各自のフォルダーと読み替えて試してほしい。

 今回読み込む「Sample.docx」の文章は図6のような内容だ。文章は太宰治作の『斜陽』一部を表示している。

図6 Excelに取り込むWord文書(『斜陽』太宰治より一部引用※こちらの作品は著作権保護期間を終了しています)

ボタンを配置し、セルの設定を行う

 先ほど使用した、「K:\Excel_Word_VBA_Tips\Excel_Word連携.xslm」ファイルをダブルクリックして開き、「Wordの文書データをExcelに取り込む」というシートを作成する。そのシートの中で「A1」のセルの幅を広くしておく。

 マウスの右クリックで表示されるメニューから、「セルの書式設定」を選択し、「配置」タブを選択して、「縦位置」に「上詰め」、「文字の制御」に「折り返して全体を表示する」にチェックを付けておく。

 また「書体」にはExcelのメニューから「Meiryo UI」を設定しておいた。文字サイズには「12」を指定した。(図7)。

図7 「A1」セルに書式設定をした

 もちろんVBAでも設定はできるのだが、何でもかんでもVBAで設定する必要はない。決まったセルの書式の設定などは、あらかじめExcelのメニューから設定しておいた方が、効率が良い。VBAで文字の書式などを設定するには、「セルの数値、フォント、文字位置、背景色、けい線など表示形式/書式設定の使い方」を参考にするといいだろう。

 次に、Excelに「WordのデータをExcelに読み込む」シートを追加する。そのシートの中に、Excelメニューの「挿入」→「図形」と選択して、「角丸四角形」を配置し、これを選択して、マウスの右クリックで表示されるメニューから、「テキストの編集」を選択して、「Word文書の読み込み」と指定する。

 「フォント」には、「Meiryo UI」、「フォントサイズ」には「14」、「フォント太さ」には「太字」、「文字位置」は「中央揃え」を指定しておく(図8)。

図8 「Wordの文書を読み込む」ボタンと「A1」のセルに書式を設定した

VBEにVBAを記述する

 次に、Excelメニューの「開発」メニューをクリックして、左端に表示される「Visual Basic」を選択してVBEを起動する。プロジェクト内にすでにModule1が追加されているので、この中にリスト2のコードを記述する。

Sub Wordの文書データをExcelに読み込む()
  Dim myWord As Object
  Dim myWordDoc As Object
  Dim wordPara As Object
  Dim i As Long
  Set myWord = CreateObject("Word.Application")
  Set myWordDoc = myWord.Documents.Open("K:\Excel_Word_VBA_Tips\Sample.docx")
 
  i = 0
  For Each wordPara In myWordDoc.Content.Paragraphs
    With ActiveSheet
      i = i + 1
      .Cells(i, 1).Value = wordPara.Range.Text
    End With
  Next
  myWordDoc.Close False
  myWord.Quit
End Sub
リスト2 Wordの文書データをExcelに読み込むコード

 Object型の変数、myWordと、同じくObject型のmyWordDoc、wordParaを宣言しておく(2〜4行目)。Long型の変数iを宣言しておく(5行目)。この変数iは行番号を表す変数だ。

 CreateObject関数で「Word.Application」への参照を作成し、変数myWordにセットしておく(6行目)。Documents.Openで「K:\Excel_Word_VBA_Tips\Sample.docx」ファイルを開き、myWordDocにセットしておく(7行目)。

Content.Paragraphsコレクション

 変数iを0で初期化し(9行目)、読み込んだ「Sample.docx」ファイルの段落内のデータ(Content.Paragraphsコレクション)を、繰り返し変数wordParaで取得していく(10〜15行目)。

 変数iを1ずつ増加し、Excelのアクティブなシートである、i行目の1列目のセルに、読み込んだ段落の内容を表示する。

 今回は、1段落しか読み込ませていないが、後ほど2段落の文章を読み込ませたら、どのようになるか、説明しておこう。

Document.Closeメソッド

 Document.CloseメソッドでmyWordDocを閉じる。ここで第1引数をfalseにすると、変更が保存されない(16行目)。

Application.Quitメソッド

 Application.Quitメソッドで読み込んでおいた「Sample.docx」を終了させる(17行目)。

実行結果

 リスト2を図8のボタンに関連付け実行すると、図9のように表示される。

図9 Wordの文書がExcelに読み込まれた

Wordの文章が2段落あった場合の表示

 では、ここで、Wordの文書が図10のように2段落あった場合の表示はどうなるか見てみよう。

図10 Word文書が2段落になっている

 この図10の文章をExcelに読み込ませると、図11のような表示になる。

図11 2段落のWord文書をExcelに読み込ませた

 図11を見ると分かるように、段落ごとに別なセルに表示されている。1段落目が「A1」、2段落目が「A2」に表示されている。もちろん、「A2」にも事前に「A1」に設定したセルの書式を設定している。3段落あれば「A3」に、4段落あれば「A4」に……というふうに表示される。

まとめと注意点

 Excelの表をWordに貼り付けるには、Excelの表の範囲を指定して、コピーし、Wordに貼り付ける方法を採っている。引数の「WordFomatting」には、Falseを指定しているので、Excelで指定した書式が、そのままWordに適用されている。このように、Excelの表をWordに貼り付けるには、意外と簡単な方法で貼り付けることができる。

 Wordの文書データをExcelに取り込む方法の注意点は、「sample.docx」をすでに開いた状態で、Excelの「Word文書を読み込む」ボタンをクリックしてはならないことだ。「Sample.docx」を開いた状態で、Excelのボタンをクリックすると、Excelが一瞬ハングアップしたような状態になるので、注意してほしい。こうなると、「タスクの終了」でExcelを終わらす以外に方法がなくなる。

著者紹介

薬師寺 国安(やくしじ くにやす) / 薬師寺国安事務所

薬師寺国安事務所代表。Visual Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。

1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。

1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。

2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。

Windows Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。

Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。

Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。

Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。

Microsoft MVP for Development Platforms - Windows Platform Development (Oct 2014-Sep 2015)。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。