エクセル2003と2007の違いについて

このQ&Aのポイント
  • エクセル2003と2007の違いについて
  • エクセル2003で作成したVBA構文が2007では使用できず、実行時エラーが発生する
  • エクセル2007で使用できるようにする方法を教えてください
回答を見る
  • ベストアンサー

エクセルグラフ2003と2007の違いについて

エクセル2003で下記のVBAの構文を作成しました。 入力画面シートで入力し、グラフに色付けを反映させたものを 印刷画面のグラフに同じものを反映させているのですが エクセル2003ではうまくいっていたのですが エクセル2007になると構文中の 【Sheets("印刷画面").ChartObjects("グラフ 2").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor】の部分で 実行時エラー'-2147467259(80004005) ColorIndexメソッドは失敗しました;'Interior'オブジェクト とでてきて使用できなくなりました。 どなたかエクセル2007で使用できるようにする方法を教えてください。 作成した構文は以下のものです。 Sub Sam1() Dim nColor As Variant Dim i As Long i = 1 If Sheets("入力画面").Cells(i, "M") = 1 Then nColor = 5 Sheets("入力画面").ChartObjects("グラフ 8").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor Sheets("印刷画面").ChartObjects("グラフ 2").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

>回答番号:No.2 この回答へのお礼 そういうことなら、Sheets("印刷画面")が「シートの保護」をかけられているとかではないでしょうか? 調べてみてください。 Sheets("印刷画面").Unprotect 'シート保護解除 Sheets("印刷画面").ChartObjects("グラフ 2").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor Sheets("印刷画面").Protect 'シートの保護

creopatra
質問者

お礼

何度もありがとうございます。 確かにシートの保護は掛けていたのですが、 保護を解除してもやはりどちらも同じところで ひっかかってしまいました。。。

その他の回答 (4)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.5

>回答番号:No.4 この回答へのお礼 (1)、問題のグラフで、手作業での「塗りつぶし」はどうなりますか? (2)、問題のグラフのあるシートに、新しいグラフを作成してマクロを実行した場合はどうなるでしょうか? 色々試してみると何か解るかもしれません。

creopatra
質問者

お礼

お気遣いいただいてありがとうございます。 おっしゃっていただいた(1)に関しては 手作業で塗りつぶしは可能なのですが、マクロに記録しても 塗りつぶし作業が記録されない状態でした。 同様に関係ないセルを塗りつぶしてマクロの記録をすると 塗りつぶし作業はちゃんと記録されました。 次に(2)に関しましても やはり1行目は通過して2行目で引っかかりが起こりました。 ここまでご尽力いただいて本当にありがとうございます。 いま、アドバイスいただいたことをもとに、 さらにいろいろ試そうと、 先ほど教えていただいたシートの保護・解除を含む構文を使用し 2003で再度再作成したところ いままで行けたはずの2003で今度は1行目で同じエラーが発生しました。 ここで頭が混乱してきてしまったのですが 一度そのファイルを2007で開いてみました。 すると、先ほどエラーが表示されていたのに 今度は問題なくクリアすることができました!!! でも、2003では相変わらずエラーでしたが・・・ でもとりあえず2種類のファイルを使用することで 何とか問題はクリアできそうです。 これもひとえにxls88さまが 知恵のない私に懲りずに付き合っていただき いろいろ試すという言葉をいただいたことで 発想の転換ができたうえでエラーの解消ができたと思っています。 本当に何度も何度もご回答いただき 貴重なお時間を使っていただいてありがとうございました。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

>保護を解除してもやはりどちらも同じところで >ひっかかってしまいました。。。 ”どちらも”とはどの”どちらも”ですか? 試しに、手作業での「塗りつぶし」はどうなりますか? あるいは、新規ブック、新規シート、新規グラフでやってみるとどうなりますか? ダメだしばかりでなく、何か標準と違うところを探してみてください。

creopatra
質問者

お礼

すみません。 どちらもというのはnColor = 5 nColor =167711680もという意味です。 おっしゃられる通り自分なりに新シートにも作成しましたがだめで、 また、2007でグラフの塗りつぶしに関して マクロの記録でコードを調べたりもしたのですが コードには塗りつぶしの記録が表示されず セルの塗りつぶしからコードを確認したりもしましたが うまくいかず困っておりました。 説明不足で申し訳ありません。 またご尽力いただきありがとうございます。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

Sheets("入力画面").ChartObjects("グラフ 8").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor の方は通って Sheets("印刷画面").ChartObjects("グラフ 2").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor は通らないのですか? >実行時エラー'-2147467259(80004005) >ColorIndexメソッドは失敗しました;'Interior'オブジェクト とありますが、ColorIndexはプロパティではないのでしょうか? ちょっと変な気がします。 因みに、「実行時エラー'-2147467259(80004005)」をキーワードにWeb検索するとたくさんヒットします。

creopatra
質問者

お礼

ありがとうございます。 何度試してもそのエラーなのです。 おっしゃられる通り は通って Sheets("印刷画面").ChartObjects("グラフ 2").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor は通りません。 先ほどいただいた回答で nColor = 167711680 を試したところ Sheets("入力画面").ChartObjects("グラフ 8").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColorも通らなくなりました。 一度WEB検索してみます。 HELPはいまいち理解ができなかったもので…

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

当方Excel2007 Ver12.0 では .SeriesCollection(1).Points(i).Interior.ColorIndex = nColor が通ります。 試しに ColorIndex = 5 を Colorで取ってみると 16711680 という数値が返されました。 .SeriesCollection(1).Points(i).Interior.Color = 16711680 で試してみればどうでしょうか。

creopatra
質問者

お礼

ありがとうございます。 ためしてみましたが。。。 やはり同じエラーが表示されてしまいました…

関連するQ&A

  • エクセルグラフを別シートのグラフに連動させることはできますか?

    エクセルのグラフで教えてください。 下記のVBAを使って同じグラフを それぞれ別シートに作成しています。 VBAの3行目のActiveSheetはシート名(入力画面)を指します。 入力画面のセルで1または2を入力することで グラフの色が変わるようにしています。 そのグラフと同じものを別シート(印刷用画面)に作成したく 入力画面の入力で印刷用画面の入力も変わるようにしたつもりなのですが・・・ この方法だと、入力した際に 一瞬印刷用画面に移動して画面がちらついてしまいます。 このちらつきをなくしたいのですが なにかよい方法はありますでしょうか? よろしくお願いいたします。 Sub Sam1() Dim i, nColor As Integer ActiveSheet.ChartObjects("グラフ 8").Select i = 1 nColor = 2 '←「2」の時の色 If Cells(i, 13) = 1 Then nColor = 5 '←「1」の時の色 ActiveChart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor Sheets("印刷用画面").Select ActiveSheet.ChartObjects("グラフ 2").Select nColor = 2 '←「2」の時の色 If Sheets("入力画面").Cells(i, 13) = 1 Then nColor = 5 '←「1」の時の色 ActiveChart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor Sheets("入力画面").Select Range("H15").Select End Sub

  • 新しいグラフを作成すると、既存グラフが新しいグラフと同一になってしまう。

    Excel2003のVBAにて次のマクロを作成し、実行したところ、 新しいグラフを作成すると、既存グラフが新しいグラフと同一になってしまいます。 グラフは月度毎に作成します。 1月度のグラフを作成すると、 11月度のグラフ・12月度のグラフが、1月度のグラフと同じものになってしまいます。 マクロ作成時には、グラフ要素データの変化が小さく気が付かなかったのですが、グラフ要素データの変化が大きくなった時点で気が付きました。 解決方法をご存じの方、是非ともご教授願います。 'A:グラフを作成するシートの番号 'Sheets("Positions"):グラフを作成する位置データ保管庫 'L,T,W,H:グラフの位置データ(グラフを作成する都度指定) 'E:グラフ要素仕訳標 'F:作成したグラフの名前の保管場所標(グラフ要素変更時にグラフを更新するため)   Sheets(A).Select NN = Sheets(A).Name With Sheets(A).ChartObjects.Add(L, T, W, H)'L .Chart.ChartType = xlDoughnut If E = 0 Then .Chart.SetSourceData Source:=Sheets("Positions").Range("Q1:Q11"), PlotBy:=xlColumns Else .Chart.SetSourceData Source:=Sheets("Positions").Range("R1:R11"), PlotBy:=xlColumns End If .Chart.Location Where:=xlLocationAsObject, Name:=NN .Chart.HasTitle = False .Chart.HasLegend = False .Chart.ChartArea.Border.LineStyle = 0 .Chart.ChartArea.Interior.ColorIndex = xlNone .Chart.PlotArea.Border.LineStyle = xlNone .Chart.PlotArea.Interior.ColorIndex = xlNone End With R = Sheets(A).ChartObjects.Count Sheets("Positions").Cells(F, 3) = Sheets(A).ChartObjects(R).Name

  • VBAでのグラフ作成時の色づけ方法

    VBAを使用して散布図を作成しているのですが、 その散布図のマーカーの色をすべて同じ色にするプログラムを考えています。 以下のプログラムを実行してみたのですが色が変更されないため、 どなたか教えていただけると嬉しいです。 よろしくお願いします。 Sub グラフ作成と色づけ() Dim i As Integer With Sheet1.ChartObjects.Add(100, 50, 300, 200).Chart .ChartType = xlXYScatter .SetSourceData Source:=Sheets("sheet1").Range("C2:DD4465") .HasTitle = True .ChartTitle.Characters.Text = "気温変化" .HasLegend = False .HasDataTable = False For i = 1 To 105 .SeriesCollection(i).Interior.ColorIndex = 3 Next i End With MsgBox ("FINISH") End Sub

  • Excel 2007 <VBAでグラフの操作>

    Excel 2007 <VBAでグラフの操作> 現在すでにあるグラフを修正しています。 下記マクロでは「各グラフに系列が2つあり、その1つ目を削除して残る1つのデータ範囲(X軸の値)を再設定する」という内容です。 下記マクロではFor構文冒頭のSet~の行で、 「実行時エラー '1004': 'Cells'メソッドは失敗しました:'_Global'オブジェクト」 とのエラーが出ます。 このエラーについて検索してみたのですが、これといったものが見つからなかったので、このマクロでおかしなところがあれば直接指摘していただけないでしょうか。 よろしくお願いします。 Private Sub Test_Arrange()   Dim MyRng As Range   Dim R As Integer   Dim n As Integer   Dim i As Integer   n = 10   R = Sheets("Sheet1").Range("A1").End(xlDown).Row   For i = 1 To n     Set MyRng = Sheets("Sheet1").Range(Cells(2, 2 * n + 3), Cells(R, 2 * n + 3))     Charts(i).SeriesCollection(1).Delete     Charts(i).SeriesCollection(1).XValues = MyRng   Next i End Sub

  • C#でのExcel操作について.(Rangeオブジェクトへの複数範囲設定)

    C#でExcelのグラフを作成させるプログラムを書いるのですが,Rangeオブジェクトへの離れたセルの複数範囲を指定したいのですが,いろいろ調べてみましたがどうしても解決できません. 調べた限りではVBではできるようですが,C#ではできないのでしょうか? Excel.ChartObjects chartObjects =(Excel.ChartObjects)oSheet.ChartObjects(Type.Missing); Excel.ChartObject chartObj = chartObjects.Add(100, 100, 700, 400); Excel.Chart chart = chartObj.Chart; Excel.Range chartRange = oSheet.get_Range("B1","B3"); /*↑の部分で("B1:B3,B5:B8,C5")のようなことをしたいです.RangeにAddメソッドのようなものがあればと思っているのですが無いみたいなので‥‥*/ chart.SetSourceData(chartRange,Excel.XlRowCol.xlColumns); Excel.SeriesCollection seriesCollection=(Excel.SeriesCollection)chart.SeriesCollection(Type.Missing); よろしくお願いします.

  • VBAでの質問

    散布図で表示した要素ChartObjects.Chart.SeriesCollection(1).Points(2)のExcel上の座標を取得するにはどうしたらいいでしょうか?

  • エクセルVBAでグラフの線とマーカを設定したい

    エクセルVBAでグラフの線とマーカを設定したいです。 グラフの線は無しでマーカの線が有りにしたいのですが、 マクロで記録したコードを見ると グラフの線、マーカの線ともにFormat.Line.Visibleで指定しています。 実際にコードを記述しても、以下の様になり、グラフの線が表示されてしまいます。 ChartObjects("1").Chart.SeriesCollection(10).Format.Line.Visible = msoFalse With ChartObjects("1").Chart.SeriesCollection(10).Format.Line .Visible = msoTrue .ForeColor.RGB = RGB(255, 102, 0) .Transparency = 0 End With グラフの線は無しでマーカの線が有りに設定は出来ないのでしょうか?

  • エクセルのグラフ

    グラフが貼り付けられているシートを見えない状態でグラフ描画したいのですがうまくいきません ちなみに、今のコードはこうです。 Sub 電力力率表示() ActiveSheet.ChartObjects("グラフ 3").Activate ActiveChart.SeriesCollection(2).Select ActiveChart.SetSourceData Source:=Sheets(s_NAME) _ .Range("A2:C146"), PlotBy:=xlColumns End Sub

  • グラフ可変範囲のデータ設定

    環境Excel2002です グラフ 1が棒グラフ2個、折れ線グラフ1個で作成されています Sheets("支社")に8支社のデータがあります グラフシートは1Sheetにしたいので グラフシートで支社を選択することにより Sheets("支社")の該当支社のグラフデータを取得します そうすると、グラフデータは可変範囲で設定することになります そのVBAが下記です ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection(1).Select With ActiveChart.SeriesCollection(1) .XValues = Sheets("支社").Range(Cells(497, i), Cells(497, i + 12)) .Values = Sheets("支社").Range(Cells(497, i + 1), Cells(497, i + 12)) End With .XValues = Sheets("支社").Range(Cells(497, i), Cells(497, i + 12)) のところで実行時エラー1004がでてしまいます エラー回避方法を教えてください

  • 積み上げグラフ 系列ごとの自動塗り分け

    現在、オフィス2003で業務の時刻表を作成しています。 写真(左上)のように業務内容と所要時間ような表があり、(右上)のようなグラフにして輸送の部分だけを色付き、他を白色で塗りわけしています。 しかし(左下)のように、順番が1行でも変わると塗り分もずれてしまます。 現在、この塗り分けを自動化するためにマクロやVBAなどを考えていて、以下のようなVBAを作り実行をさせましたが、思うように表示されません。 Sub Macro2() ' ActiveSheet.ChartObjects(1).Activate ActiveChart.ChartArea.Select Dim scname As String Dim colidx As Variant Dim i As Integer With ActiveChart For i = 1 To .SeriesCollection.Count scname = .SeriesCollection(i).Name Select Case Split(scname, " ") Case "輸送": colidx = 4 End Select .SeriesCollection(i).Interior.ColorIndex = colidx Next End With End Sub 何かよい方法は(VBAやマクロなども踏まえて)ありますでしょうか? ご教授宜しくお願いします。 (最終的に凡例は表示させたくはありませんが、らラベルとして系列名を表示させたく思っています。)

専門家に質問してみよう