初めて質問させていただきます。
現在Excel2010でピボットグラフを描画しています。
(ただし、利用ユーザーがExcel2010ではないため、保存形式をExcel97-2003形式で保存)
描画したグラフに対し、VBAで次のように編集を行っています。
Dim objSrs As Series
With ActiveChart
For Each objSrs In .SeriesCollection
'データ要素をループ
For i = 1 To objSrs.Points.Count
With objSrs.Points(i)
.MarkerStyle = xlMarkerStyleDiamond '※実際はSelect Caseの条件で設定
.MarkerForegroundColorIndex = 29 '※実際はSelect Caseの条件で設定
'マーカーの色を変更
.MarkerBackgroundColorIndex = .MarkerForegroundColorIndex
'マーカーの線幅を設定
.Format.Line.Weight = 1.5
End With
Next i
Next objSrs
End With
作成した自分の端末(Excel2010)では問題ないのですが、Excel2007が入った端末では、
.Format.Line.Weight = 1.5
の所で次のようなエラーになってしまいます。
実行時エラー '-2147417848(80010108)'
'Weight' メソッドは失敗しました:'LineFormat'オブジクト
ウォッチで中を確認してみると、objSrs.Formatには値があるのですが
objSrs.Format.Lineには、<アプリケーション定義またはオブジェクト定義のエラーです。>
となっています。
線の幅だけではなく、
.Format.Line.ForeColor.RGB = RGB(253, 153, 153)
でもエラーになります。
.Format.Lineはバージョンで、記述方法に違いがあるのでしょうか?
http://msdn.microsoft.com/en-us/library/ff838220.aspx
ヘルプ > Excel 2010 開発者用リファレンス > Excel オブジェクト モデル リファレンス > Point オブジェクト > プロパティ
Point.Formatプロパティ は2007から追加されたので、2007以降では動作するハズです。
提示コードだけなら、私の環境ではエラーは出ません。
(winXPsp3/xl2007sp3 12.0.6654.5003 他ver混在あり)
>実行時エラー '-2147417848(80010108)'
検索してみると、色々な事例があって、オートメーションエラー..というか
VBAでサポートされていないエラーみたいなので厄介そう。
#バグじゃないのかっ..て言いたくなりそうですが
試しに、ChartをActiveにしないで実行してみたらどうなるでしょう。
Sheet上のChartだったら
With ActiveSheet.ChartObjects(1).Chart
:
グラフシートだったら
With Charts(1)
:
など。
他にはエラーが出る端末でOfficeの更新プログラム確認したり、
参照不可項目がないか念のため確認したり。
あるいは2003用のコードを試してみたり。
Sub try()
Dim s As Series
Dim p As Point
For Each s In ActiveChart.SeriesCollection
For Each p In s.Points
p.MarkerStyle = xlMarkerStyleDiamond
p.MarkerForegroundColorIndex = 29
p.MarkerBackgroundColorIndex = 29
p.Border.Color = RGB(253, 153, 153)
p.Border.Weight = 2 '1:xlHairline,2:xlThin,3:xlMedium,4:xlThick
Next
Next
End Sub
お礼
Window Updateを行った後、再度VBAを実行させたところ エラーになりませんでした!! 同じExcel2007でも、更新プログラムによって このような違いがあるとは、正直思っていなかったです。 やはりUpdateは大切なのですね。 大変勉強になりました。ありがとうございました。
補足
教えていただいたように、エラーの出る端末のOfficeの更新プログラム確認したところ、 膨大な数の更新が表示されました。 更新が行われている他の端末(Excel2007)で実行させると、エラーになりませんでした。 ということは、Officeの更新プログラムが一番怪しいですね。 まずは、Windows Updateを行いたいと思います。 そして、実行させた結果を改めてご報告させていただきます。 しばしお時間を下さい・・・。