TOP絵変更 → 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41  クリックすると変更されます
HOME

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

『MS word2003』でグラフを作成するVBAマクロの作成例

ExcelのVBAはいっぱいメモがあるのに、Wordはググってもどこにも出ない。
この不平等がこちらとしてはすんごく不便だったので、とりあえず今回
作ったテスト的なものを置いておく。

作ったのは『Word2003でグラフ出力』だ。


まず画面にボタンでも用意しておいて、以下を書く。

Private Sub cmbGraph11_Click()
Selection.MoveDown Unit:=wdLine, Count:=2

Application.ScreenUpdating = False
Graph_Make
Application.ScreenUpdating = True

End Sub


Graph_Makeを呼ぶ。
とりあえず無駄だけど再描画はFalseにしておく。
このグラフ、なぜか再描画を必ずしてしまう。
たぶん外部のGRAPH.EXEみたいな感じの名前のを起動して作っているからだろう。
なんで最初に下に2個移動するのかは意味不明。



次にGraph_Makeの内容



Sub Graph_Make()

Dim shp As InlineShape
Dim obj As Graph.Chart
Dim dat As Object

' グラフ生成
Set shp = Selection.InlineShapes.AddOLEObject(ClassType:="MSGraph.Chart.8", _
LinkToFile:=False, DisplayAsIcon:=False)

Set obj = shp.OLEFormat.Object

' グラフタイプ設定
obj.ChartType = xlColumnStacked

' フォントサイズ設定
obj.ChartArea.Font.Size = 6

' プロットエリア背景色設定
obj.PlotArea.Interior.ColorIndex = xlNone

' ラインスタイル設定
obj.ChartArea.Border.LineStyle = 0
obj.Legend.Border.LineStyle = 0

'===================================='
' ★☆ データシート編集 ☆★ '
'===================================='
Set dat = obj.Application.DataSheet

' グラフY軸決定
dat.Cells(2, 1) = "テスト1"
dat.Cells(3, 1) = "テスト2"
dat.Cells(4, 1) = "テスト3"

' グラフX軸決定
For i = 16 To 20
dat.Cells(1, i - 14) = i
Next i

' グラフ値クリア
dat.Range(dat.Cells(2, 2), dat.Cells(2, 20 - 14)) = 0
dat.Range(dat.Cells(3, 2), dat.Cells(3, 20 - 14)) = 0
dat.Range(dat.Cells(4, 2), dat.Cells(4, 20 - 14)) = 0

' グラフ値設定 ここで各項目の値を設定していく
dat.Cells(2, 2) = 20
dat.Cells(3, 2) = 30
dat.Cells(4, 2) = 40

' Y軸表示設定
obj.Axes(xlValue).MaximumScale = 100

' X軸文字の傾き設定
obj.Axes(xlCategory).TickLabels.Orientation = 90

' X軸文字幅間隔設定
obj.Axes(xlCategory).TickLabelSpacing = 1

' グラフの色設定
obj.SeriesCollection(1).Interior.ColorIndex = 41
obj.SeriesCollection(2).Interior.ColorIndex = 3
obj.SeriesCollection(3).Interior.ColorIndex = 4

' グラフ確定?
shp.ConvertToShape

a = ActiveDocument.Shapes.Count
ActiveDocument.Shapes(a).Select
Selection.ShapeRange.Top = a * 100
Selection.ShapeRange.Left = 308

Selection.ShapeRange.ScaleWidth 2.25, msoFalse, msoScaleFromBottomRight
Selection.ShapeRange.ScaleWidth 1.56, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 1.02, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 1.07, msoFalse, msoScaleFromBottomRight

Selection.ShapeRange.IncrementTop (a - 1) * 70

End Sub


ざっと書いてみたが、気になったところをちょびちょび説明。

まずコメントでいうと、『グラフ生成』のところ。
ここは決まってるっぽい。
この作成したやつのオブジェクトどこやねんと探していたら、
OLEFormat.Object になったので速攻でset。
ChartArea(おそらくグラフ全体の設定)やらPlotArea(グラフの棒の後ろとか)
やLegend(凡例のところ)で何かした後、ついにデータ設定へ。

WordだとExcelみたいな表が別枠で表示されるので、これの設定をする。
obj.Application.DataSheet で設定できるので、思わずdatにset。

ここからはまさにExcel。
dat.Cells(x, x)などと指定すると、その場所の値やらを設定できる。


値を入れた後はオブジェクトのY軸やX軸の設定をまたして、
グラフ確定(?)をする。

ここがよくわからないんだが、VBAじゃなかったら普通、
どこかしらクリックすると勝手に決定するのだが、
VBAでのその設定の仕方がわからなかった。
わからなかったのでConvertToShapeしてみた。
これにすると図形っぽくなる。
まぁ、ダブルクリックすればまたグラフの設定できるしいいかなと。
位置も自由に決められるし。
あ、でも改行より下に設定したい場合はどうすればいいかわからん。

話は戻り、作ったオブジェクトの最新のカウント数を取得して、
それをセレクトして、セレクションで位置やら大きさやら設定。
2個目以降作ってしまっていて、1個目と場所が完全にかぶるのを防ぐために
Topは色々いじっている。主に『カウント数 * 値』をしている。
まるかぶりしてもいいという人は 『a *』 を消してみよう。


あ。ちなみにこれをする場合は参照設定をする必要がある。
Microsoft Visual Basic 画面の『ツール』⇒『参照設定』の画面で、
【Microsoft Graph 11.0 Object Library】 を探してチェックしよう。

↓こんな感じで。

参照設定


Microsoft Graph なんちゃらだけでも動かなかった場合は、
上の図を参照に全部チェックでもつけれみればいい。


こんなところか…色々省いた気もするけど、
ヒントはかなり置いたつもり。ていうかword2003でグラフをマクロで作るなんて
そんなアホなことをする人は私以外にはいないと信じる。
スポンサーサイト

テーマ : テイルズウィーバー
ジャンル : オンラインゲーム

コメントの投稿

非公開コメント

著作権

Copyrights (C) NEXON Corporation and NEXON Co., Ltd.
All Rights Reserved.
乱数試行機

乱数試行機

成功率 %
試行回数 回

成功    :0 回
失敗    :0 回
成功率結果 :0 %
試行回数結果:0 回
簡易MRシミュレータ

簡易MRシミュレータ
by †真・ブリニクルディメンションスレイヤー

S:64 
H:136 
F:17 
I:16 
M:14 
X:16 
A:11 
Q:10 
C:9 
アンチ無
MR費用:0
MR券込:0
回した回数:0

※ステがMAXになると
 黄色文字になります
 ステ自体違う場合はコメントくだs
※ラジオボタンを押下すると
 アンチマジックを使った状態に
なります

個人リンク
みんなの呟き

   



サイト説明
BloodyRosary は
テイルズウィーバーなブログです。
レコ…霧鯖で活動してるってばよ。
TwitterID:yoinagiTW

このブログはリンクフリーです。
+50000
しかしなぜか東方カウンター
自己紹介

宵凪(テチ) Lv:290
3次覚醒済


江戸川ドイル(アナイス) Lv290
2次覚醒済


竜崎シオン(イソ) Lv290
2次覚醒済


ラストセラフィ(ベンヤ) Lv290
2次覚醒済


シルフィアス(ナヤ) Lv:290
2次覚醒済


ジールラファル(マキシ) Lv:255
覚醒済


レスヴィリア(ミラ) Lv:255
覚醒済


聖王リヴァイア(シベ) Lv:255
覚醒済


セレス(クロエ) Lv265
覚醒済


月千夜(ジョシュ) Lv255
覚醒済


雪千夜(ランジエ) Lv255
覚醒済


超社長(イサック) Lv255
覚醒済


ナズナ(ボリ) Lv255
覚醒済


シルベイン(ピン) Lv:255
覚醒済


ディシディア(ルシ) Lv255
覚醒済


メルブレイズ(ロアミニ) Lv255
覚醒済


ルヴァリオ(ノクターン) Lv255
覚醒済


臼いネコ(テチ) Lv290


x音葉x(テチ) Lv199

他のキャラ
セリカ様(アナイス) Lv290
黒銀シア(ピン) Lv274
全キャラレコ…霧鯖で適当に活動中
今までの絵
右下に行くほど新
左上に行くほど古
リンクにマウスをあわせると
縮小画像表示

ちなみに読み込み遅いです。
最新コメント
カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
カテゴリ
リンク
テスト
クリックすると
シナリオ開始 
 
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。