チャート設定値の取得に関して †
ページ | OpenOffice.org FAQの登録ページ |
---|---|
投稿者 | |
分類 | |
優先順位 | |
状態 | |
カテゴリー | |
投稿日 | 2010-03-31 13:39:49 (水) |
OS | XP SP3 |
依存するページ | |
バージョン |
メッセージ †
回答ページでは行末に「~」を付加する必要はありません |
Chartの各種設定に関して教えてください。
VBAで以下のコードにてChartの設定をCHKしています。
VBAのコードをOooのマクロに移植しているのですが
Excelではグラフの操作もマクロに記録できたのである程度
コードが分かったのですがOooでは記録できない為
コード内のコメントで記載した箇所が分かりません。
あと別件ですが、Basicのマクロエディタの「オブジェクトカタログ」のウインドウで
マウスのホイールスクロールが出来ないのは仕様なのでしょうか?
'Chartタイプが縦棒グラフか? '変更ならcreateInstance("com.sun.star.chart.PieDiagram")とかで出来るようだが 'タイプの取得は? If xlChart.ChartType <> 51 Then Exit Function End If '凡例が正しく設定されているか?ここはOK oChartDoc=oChart.getEmbeddedObject() oChartDia= oChartDoc.getDiagram if oChartDoc.HasLegend=false then Exit Function end if 'LegendEntriesに相当する物が分からない。 If xlChart.Legend.LegendEntries.Count <> 4 Then Exit Function End If '項目名が正しく設定されているか? If xlChart.Axes(1, 1).CategoryType <> 2 And xlChart.Axes(1, 1).CategoryType <> -4105 Then Exit Function End If 'データラベルが設定されているか? For i = 1 To 4 If xlChart.SeriesCollection(i).HasDataLabels = False Then Exit Function End If If xlChart.SeriesCollection(i).DataLabels.Type <> 2 Then Exit Function End If Next 'Chartの位置CHK wAdd = .Worksheets(1).ChartObjects(1).TopLeftCell.Address If Mid(wAdd, 2, 1) <> "A" And Mid(wAdd, 2, 1) <> "B" _ And Mid(wAdd, 2, 1) <> "C" And Mid(wAdd, 2, 1) <> "D" _ And Mid(wAdd, 2, 1) <> "E" And Mid(wAdd, 2, 1) <> "F" And Mid(wAdd, 2, 1) <> "G" Then Exit Function End If x = InStrRev(wAdd, "$") + 1 If Mid(wAdd, x, 100) < 8 Then Exit Function End If
参考ページ †
M.Kamataki (2010-04-01 10:05:22 (木))
以下のはにゃさんのチャート(グラフ)のマクロに関するまとめページはご覧になりましたか。これですべて解決するということはないかもしれませんが、このあたりを出発点に調べると良いと思います。
http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FCalc%2Fcharts
http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FCalc%2Fchart2
2個目は見ていませんでした †
(2010-04-01 12:07:14 (木))
1個目は確認したのですが、2個目は見ていませんでした。
内容を確認してみます。
無題 †
何点か分からない箇所があります (2010-04-07 16:47:23 (水))
いろいろ調べたチャートタイプの取得と凡例の要素の取得は出来ました。
ただ、依然何点か分からない項目があります
現在使用しているグラフの縦棒グラフで
な感じのオーソドックスなグラフです。
このグラフ内の「データ範囲」の取得と「東京〜福岡」の項目タイトルと
GUI操作で行う「行内のデータ系列(R)」、「列内のデータ系列(C)」の
どちらが設定されているか?です。
項目タイトルの方は無理やりなら、凡例取得で使用した「oSeqes」から各系列の情報を
取得し、oSeq.getValues() title=oLabel.getSourceRangeRepresentation()で取得できる値を無理やりばらせば出来るとは思うのですが他に良い方法はないでしょうか?
◆出来たコード
・チャートタイプの取得oChartDia=oChartDoc.getDiagram() if oChartDia.DiagramType <> "com.sun.star.chart.BarDiagram" then Exit Function end if '凡例の表示 if oChartDoc.HasLegend=false then Exit Function end if 'データプロバイダ取得 oDataProvider = oChartDoc.getDataProvider() 'ダイアグラム取得 oChartDia= oChartDoc.getFirstDiagram() oCoords = oChartDia.getCoordinateSystems() oCoord = oCoords(0) oChartTypes = oCoord.getChartTypes() oChartType = oChartTypes(0) oDataSeries = oChartType.getDataSeries() '項目名が正しく設定されているか?(凡例用) if oChartDoc.DataSourceLabelsInFirstColumn =true then For j = 0 To UBound(oDataSeries) step 1 oSeries = oDataSeries(j) oSeqes = oSeries.getDataSequences() if UBound(oSeqes)<>4 then exit function end ifよろしくお願いします。