「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:1
総数:2414
現在:3


チャート設定値の取得に関して

ページOpenOffice.org FAQの登録ページ
投稿者
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2010-03-31 13:39:49 (水)
OSXP SP3
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

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 (水))


いろいろ調べたチャートタイプの取得と凡例の要素の取得は出来ました。
ただ、依然何点か分からない項目があります

現在使用しているグラフの縦棒グラフで
http://www.geocities.jp/okaway03170507/img04/ex160.gif
な感じのオーソドックスなグラフです。

このグラフ内の「データ範囲」の取得と「東京〜福岡」の項目タイトルと
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

よろしくお願いします。

お名前:
題名: