エクセルとワードの連携による成績表データのレイアウト処理方法
- エクセルとワードを連携させることで、成績表データを効率的にワードに表示させる方法をご紹介します。
- 現在はエクセルでのソートのマクロを使用していますが、その後のレイアウト処理は手作業で行っています。
- エクセルとワードを連携させることで、エクセルでのソートした結果を自動的にワードに表示させ、レイアウト処理を効率化することが可能です。
- ベストアンサー
エクセルとワードの連携
こんにちは いつもお世話になっています エクセル(2007)に成績表データがあります。人名、クラス、教科の項目です。 ここから、教科ごとにクラス別の上位3位までをワード(2007)のテキストボックス(複数)に入力して印刷用にレイアウト調整しています。 ここで漠然とした質問になりますがアイデアで構いませんのでお願いします。 エクセルの表から、特定データをレイアウト処理用にワードに持ってくる際の効率的な方法を教えてください。 現在の自動化部分はエクセルでのソートのマクロだけで、その後は手作業でワードの複数テキストボックスへの貼り付けをしています。 素人考えでは、例えばエクセルとワードを連携させてエクセルでソートしただけで、ワードに上位3位までを表示させ、その後レイアウト処理を手動でできないかと思っています。 関連情報でも構いません。よろしくお願いします。
- 5goma
- お礼率82% (265/321)
- オフィス系ソフト
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
位置等は分かりませんから、あくまでもサンプルとして出しておきます。連結は、オートメーションにしました。挿し込みのODBCは並べ替えには、Queruを作らなくてはなりませんが、私は、詳しくありません。また、ExcelからWordをコントロールするよりも、Wordからのほうが楽です。 以下は、Wordマクロですが、実際のWordファイルの標準モジュールか、ThisDocument に登録してお使いください。なお、TextBox は、オートシェイプであること。 ブック名とシートは予め登録してください。TextBox の数と、取得するシートは数を合わせてください。参考にしてみてください。 '// Sub GetExcelData() '設定 (* は、ユーザー設定可能) Const xlFNAME = "myBook1.xlsx" '* Const xlSHNAME = "Sheet1,Sheet2,Sheet3" '*スペースは入れないで、カンマで区切る '--------------- Dim arSheets As Variant Dim xlPath As String, xlApp As Object Dim xlBk As Object, xlSh As Object, sh As Variant, Ar() As Variant Dim rng As Object, t As Variant, a As String, cnt As Integer Dim i As Long, j As Long, k As Long Dim ctrl As Object Const xlTop10Items As Integer = 3 arSheets = Split(xlSHNAME, ",") On Error GoTo ErrHandler Set xlApp = CreateObject("Excel.Application") With xlApp xlPath = .DefaultFilePath '*Excelのバス(現在はデフォルトパス) '.Visible = True '*ブックを表示する(ブロックは非表示) Set xlBk = .Workbooks.Open(xlPath & xlFNAME) End With For Each sh In arSheets Set xlSh = xlBk.Worksheets(sh) xlSh.AutoFilterMode = False Set rng = xlSh.Range("A1").CurrentRegion 'オートフィルタはA1からで、2列目で順位を決めている rng.AutoFilter Field:=2, Criteria1:="3", Operator:=xlTop10Items '* With rng For i = 2 To .Rows.Count If .Cells(i, 1).EntireRow.Hidden = False Then t = xlApp.Transpose(.Rows(i).Value) t = xlApp.Transpose(t) t = Join(t, Space(1)) a = a & vbCrLf & t cnt = cnt + 1 End If If cnt > 3 Then Exit For '3列取得したら離脱 Next i End With ReDim Preserve Ar(k) Ar(k) = Replace(a, vbCrLf, "", , 1) a = "" k = k + 1: Set rng = Nothing: cnt = 0 Next sh xlBk.Close False For Each ctrl In ActiveDocument.Shapes If ctrl.Type = msoTextBox Then ctrl.TextFrame.TextRange.Text = Ar(j) j = j + 1 Beep '* ビープ音 End If If j >= k Then Exit For Next ctrl ErrHandler: Set xlBk = Nothing: Set xlSh = Nothing: Set rng = Nothing xlApp.Quit Set xlApp = Nothing ActiveDocument.Activate End Sub
その他の回答 (3)
- yy_kd
- ベストアンサー率25% (5/20)
差し込み印刷でも可能と思いますがWordとの連携の例は Word文書の特定部分を Excelに記録されている文字列で置き換える代物ですが・・・
お礼
yy_kd 様 ありがとうございました。 アイデアをご紹介頂き助かりました。 試してみます。 簡単で恐縮ですが、お礼申し上げます。
- imogasi
- ベストアンサー率27% (4737/17068)
質問のテーマなら「差込印刷」を使えるのでは。 ワードの常識、「差込印刷」のことが1言も出てこないのは知らないから? 「差込印刷」だけをテーマにした、単行本も市販されています。詳しくは勉強してください。 Googleででも「差込印刷」「差(し)込み印刷}で照会すれば、解説が多数有る。 ーー 上位者を抜き出す方法はエクセル関数でも出来なくは無いが、フィルタがお奨め。 質問振りから、これも使ってないのでは。 データーフィルターオプションートップテンートップ3位に変更ーOK 例データ 氏名 点数 a 23 b 45 c 65 d 78 e 54 f 65 マクロなら(マクロの記録で判るが) Sub Macro3() Range("A1:B7").AutoFilter Field:=2, Criteria1:="3", Operator:=xlTop10Items End Sub ーー 結果 氏名 点数 c 65 d 78 f 65 編集ージャンプーセル選択ー可視セルーOK 別シートなどに貼り付け。
お礼
imogasi 様 ありがとうございました。 差し込み印刷、フィルタを知りませんでした。 ご紹介頂き助かりました。試してみます。 簡単で恐縮ですが、お礼申し上げます。
- MackyNo1
- ベストアンサー率53% (1521/2850)
ご希望の操作は、単純にリンク貼り付けでできそうです。 エクセルのセルを選択し「コピー」、ワードのテキストボックスにカーソルを置いて、ホームタブの「貼り付け」をクリックして「形式を選択して貼り付け」で「テキスト」を選択して「リンク貼り付け」して下さい。
お礼
MackyNo1 様 ありがとうございました。 リンク貼り付けを知りませんでした。 大変勉強になりました。試してみます。 簡単で恐縮ですが、お礼申し上げます。
関連するQ&A
- エクセルの表をワードに貼り付けるとはみ出る
エクセルの表をワードに貼り付けたいのですが、 はみ出てしまいます。右方向に飛び出ているし、次ページにも渡ってしまっています。 テキストボックスを挿入してその中にコピーしてもうまくゆきません。 大き目の表をワード1ページに収める、あるいはテキストボックスの大きさに合わせて貼り付けることは可能なのでしょうか? テキストボックスに画像を貼り付ける場合は、自動的に画像がそのサイズに合わせてくれるのですが…。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルの表を縮小してワードに貼り付ける
エクセルの表を縮小してワードに貼り付ける エクセルの表をワードに張り付けたいのですが、やってみると少し大きすぎます。 そこで少し縮小して張り付けたいのですが、可能ですか? 一つは1頁に収まるように、もう一つはテキストボックスに収まるようにしたいのです。 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- エクセルとワードの連携
エクセルに入力された複数のデータを読み込ませて ワードの所定の位置<-xxxx->←の様な印をつけたところに 貼り付けていくマクロというのがあるというのを 昔聞いた気がするのですが、 これはどのような機能を利用して 実現されていますか?? 例えば エクセルのA1に氏名が入力されていたら、 ワードの 氏名 をエクセルデータからマクロで読み込ませ入力する 次にB1に住所が入力されていたら、 ワードの 住所 部分にエクセルデータからマクロで読み込ませ入力する ようなイメージです。 参考になるようなサイトも教えていただければと思います。 よろしくお願いします。
- 締切済み
- Visual Basic
- エクセルで作った表をワードに貼り付けたい
オフィス2003を使っています。 エクセルで作った表を、ワードに貼り付ける際、大きさが拡大されてコピーされているようになってしまいます。 これを、ワードの必要なスペースに合わせる為に、表の角をドラッグしたり、貼り付けた後で、行や列の追加・削除をしながら編集するにはどうしたらいいですか? イメージとして、テキストボックスのような感じで表を作っていきたいです。 表のデータは全てエクセルにあるため、ワード上で一から作成し直す事はとても出来ない量です。(締め切り期日の都合上) 何かいい方法があれば教えて下さい。 最悪、拡大・縮小印刷をかけて手で張り合わせるつもりですが、PCでできるならそうしたいのが希望です。 (専門用語などはわかりませんので、その旨宜しくお願いします。)
- ベストアンサー
- オフィス系ソフト
- VBAでEXCELからWORDにグラフをコピー
VBAでEXCELからWORDにグラフをコピー する方法が分かりません。 EXCELで作成した複数のグラフをWORDのテキストボックスに貼り付けるマクロを組んでいます。 「マクロの記録」を行ってもWORD側の処理がうまくカンニングできません。 処理はEXCEL側で行っています。 PasteSpecialなどを使って試行錯誤したのですがダメでした。 詳しい方がいましたら教えて下さい。
- 締切済み
- Visual Basic
- Wordのページレイアウトを180度回転したい
Word 2003ですが、 何ページかの書類に、複数の表とテキストボックスでレイアウトされたページがあります。 フッターの位置を逆にしたいのですが、そのページだけを180度回転するようなことはできますでしょうか? よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- エクセルでの図表レイアウト設定について
エクセルで、文字が入っている表のセルの中に写真を貼り付け、文字が写真のところで折り返すように設定をしたいのですが、 ワードでしたら、写真をテキストボックスの中に入れてから、テキストボックスの書式設定でレイアウトを四角に設定することで可能かと思うのですが、 エクセルではどうすればよいのでしょうか。 30箇所以上あるので、困っています。 よろしくおねがいします。
- 締切済み
- オフィス系ソフト
- エクセルデータを使っての差し込み印刷の使い方について教えてください。
エクセルデータを使ってのワード差し込み印刷について教えてください。通常データを差し込むとエクセルの行単位でデータが差し込まれますが、ある列のデータ(例えば人名)で同じものが複数ある場合、印刷すると同じ人名のものが複数枚印刷されてしまいます。同じ人名のものは出来たら1枚にまとめたいと思うのですがどうすればよいのでしょうか。エクセルもしくはアクセスで加工、またはワードで調節だと思いますがご指導いただけたら幸いです。
- ベストアンサー
- オフィス系ソフト
- ワードやエクセルで作った文章の回転
ワードとエクセル2003を使っております。テキストボックスに文章や絵を書いたり挿入した後で、そのテキストボックスを逆さまなど任意の角度に回転させたいのですが、どうしたらいいのでしょうか? 2003ではなく2007なら可能でしょうか?
- ベストアンサー
- オフィス系ソフト
- ワードで雑誌のようなレイアウトをするには
テキストボックスなどを使用して雑誌のようなレイアウトを作ろうと思いましたが、テキストボックスと画像が重なった時に、画像の設定をしても、後ろのテキストボックスの文字が画像を回りこむようにはなりません。 よく雑誌などで、コラージュ作品と文書が一緒になったようなレイアウトを見かけますが、あれはワードではどのようにして作るのでしょうか?ないしはワードでの作成を容易にするフリーソフトなどはあるでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
Wendy02 様 ありがとうございました。 大雑把な質問にもかかわらず具体的にマクロをご紹介頂き痛み入ります。 勉強しながら大切に使わせていただきます。 簡単で恐縮ですが、お礼申し上げます。