具体的になってきました。
Excelファイルのデータベース範囲はA~Wの23列で、1行目がヘッダ、2行目以下が1行ごとに1名のデータ、そして、その中のL~Uの10列がグラフチャートの範囲ということですね。
Word側に13列のテーブルがあるとします。行数は2で1行目はヘッダとし、Excelデータベースのヘッダとあわせます(A~K,V,W列)。
マクロは、A~K列がループでもいいのですが、Word側の12,13列目とExcel側のV,W列を対応させなければなりませんので、この部分はループからはずして、個別に記入します。また、Wordでのグラフの表示位置はShapesオブジェクトのTop,leftプロパティで操作します。
総合的に、次のようなマクロ例になります。
Sub Macro1()
Dim id As Integer
Set wkbObj = CreateObject("C:\My Documents\Book1.xls")
Set MySheet = wkbObj.Worksheets("Sheet1")
Set MyGpObj = MySheet.ChartObjects(1).Chart.SeriesCollection(1)
'On Error GoTo ERRHAND
With ActiveDocument
id = .ScrollBar1.Value
Application.ScreenUpdating = False
For x = 1 To 11
.Tables(1).Cell(2, x).Select
Selection.TypeText Text:=MySheet.Cells(id, x).Value
Next x
.Tables(1).Cell(2, 12).Select
Selection.TypeText Text:=MySheet.Cells(id, 22).Value
.Tables(1).Cell(2, 13).Select
Selection.TypeText Text:=MySheet.Cells(id, 23).Value
.Shapes(2).Delete
MyGpObj.Values = "=Sheet1!R" & id & "C12:R" & id & "C21"
MySheet.ChartObjects(1).Copy
Selection.Paste
Selection.ShapeRange.LockAnchor = False
Selection.ShapeRange.WrapFormat.AllowOverlap = True
With .Shapes(2)
.WrapFormat.Side = wdWrapBoth
.WrapFormat.Type = 3
.ZOrder 5
.Top = 50
.Left = -180
End With
Application.ScreenUpdating = True
Selection.MoveDown Unit:=wdLine, Count:=1
ERRHAND:
Set wkbObj = Nothing
Set MySheet = Nothing
Set MyGpObj = Nothing
End Sub
補足
早速のお返事、ありがとうございました。 オブジェクト形式を変更することでグラフの表示内容も 変更されるようになりました。 が ●スクロールバーを動かすとグラフの配置位置が Word上で変わってしまう(とんでもなく遠くの位置に作られてしまう) ●グラフにしているのはL列~U列なのですがレーダーチャート上の L列の値の上にA列の値がなぜか表示されてしまう。 ●グラフのデータラベル(テーブル上の項目名)が表示されない。 (データの値は表示される) という現象が起こっています。 <最終的に作りたいもの> (材料) *元データExcel 1行目は項目名(ID、姓、名、総合評価、A項目、B項目など)で全23列。 2行目以降1行につき1名のデータ Wordに値として表示したいのは本当はA列~K列11列とV~W列2列の計13列。 残りL列~U列の10項目についてグラフ表示する。 ただ、リンクする関係上、L列~U列についてもテーブルとしてWord上で 値表示をしなくてはいけないのであればやむをえないと考える。 その場合、Wordに貼り付けるテーブルは23列で2~3行にわたる。 よってFor x = 1 To 23とし MyGpObj.Values = "=Sheet1!R" & id & "C12:R" & id & "C21" としました。 Q:Wordに貼り付けるテーブルを2~3行にすると、スクロールバーを 動かしても1行目しか変わりません。 それは仕方ないのでしょうか。