VBSでExcelのグラフ作成方法について

このQ&Aのポイント
  • VBSを使用してExcelのグラフを作成する方法について解説します。
  • Excelを起動し、CSVファイルを開いてデータを読み込んだ後、折れ線付き散布図のグラフを作成する処理について詳しく説明します。
  • グラフタイプを折れ線付き散布図に変更する際に生じる「型が一致しません」というエラーについて、具体的な原因と修正方法を解説します。
回答を見る
  • ベストアンサー

VBSでExcelのグラフを作成

VBScriptで 1.Excelを起動 2.CSVファイルを開く 3.開いたデータを使ってグラフ(折れ線付き散布図)を作る という処理を一括して行おうとしています。 現在2までは成功しており、3でつまづいています。 具体的には、グラフタイプを折れ線付き散布図に変更するところでエラーが生じます。 以下実際のコードです。 'Excelを開く Set excel = CreateObject("Excel.Application") excel.Visible = true 'CSVファイルを開く Set book = excel.Workbooks.Open("C:\\test.csv") 'グラフを作る Set sheet = excel.ActiveSheet Set chart = sheet.ChartObjects.Add(50, 50, 500, 300) chart.Chart.ChartType = xlXYScatterLines '※※※ この行でエラー ※※※ chart.Chart.SetSourceData sheet.Range("A2:B50") エラーの内容は「型が一致しません」というもので、この行がなければ最後まで動作します。 (グラフタイプが最もデフォルトの集合縦棒になってしまいますが) グラフタイプを折れ線付き散布図にする、chart.Chart.ChartType = xlXYScatterLines という シンプルな一文のどこに間違いがあるのか、ご教授願います。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

xlXYScatterLines はExcelの定数名です。 Excel上のVBAであれば、Excelが解釈してくれますが VBSでは出来ませんので Excel のイミディエイトウィンドウで ?xlXYScatterLines でEnterキー ↓ 74 (2010では) を得てこの実数をVBSで使用してください。 chart.Chart.ChartType = 74 のように。 ただ、後で見た時に分かりづらいので Const xlXYScatterLines = 74 と宣言しておいて chart.Chart.ChartType = xlXYScatterLines と使う場合が多いです。

onosendai
質問者

お礼

ありがとうございます、これでした! 74と実数を代入したところうまくいきました! (2002と少々古いバージョンでしたが74でOKでした) 「Exselマクロ上で記録されたVBAはそのままVBSで使える」と 思い込んでおりました。今後はこういった違いもあるという点 にもう少し注意しながら作業しようと思います。

その他の回答 (1)

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  VBAのヘルプで「ChartObjects コレクション オブジェクト」のページをご参照ください。  下記の説明が参考になるかもしれません。 ChartObjects コレクションには、1 つのシートにあるすべての埋め込みグラフが含まれています。空の埋め込みグラフを新しく作成して、コレクションに追加するには、Add メソッドを使います。新しい埋め込みグラフにデータをプロットし、書式を設定するには、ChartWizard メソッドを使います。次の使用例は、埋め込みグラフを新しく作成し、セル範囲 A1:A20 のデータを折れ線グラフとして追加します。 Dim ch As ChartObject Set ch = Worksheets("sheet1").ChartObjects.Add(100, 30, 400, 250) ch.Chart.ChartWizard source:=Worksheets("sheet1").Range("a1:a20"), _ gallery:=xlLine, title:="New Chart"  なお、私が確認してのはExcel2003です。 では。

onosendai
質問者

お礼

回答ありがとうございました。

関連するQ&A

  • VBAでのグラフ作成について質問です。

    VBAでのグラフ作成について質問です。 Sheet1のA2:A10にx軸の値、Sheet1のD2:D10にy軸の値を設定した折れ線付き散布図を作成したいと思い、以下のようなマクロを組みました。 Sub Test() Dim chart1 As Chart Set chart1 = Charts.Add chart1.SetSourceData Worksheets("Sheet1").Range("A2:A10, D2:D10") chart1.ChartType = xlXYScatterLines End Sub 実行してみると、x軸に設定したセルがy軸の値になってしまい、 xの値が空欄の2つの折れ線グラフが現れてしまいます。 A2:A10をx軸の値に、D2:D10をy軸の値にしてグラフを作成するには上記のマクロをどのように変更すればよいのでしょうか?

  • Excelマクロによるグラフ作成時の元データの取得について

     Excelマクロでグラフを作成したいのですが、以下(1)のように書いたら、Grp1.Chart.SetSourceData・・・のところでエラーになってしまいました。そこで、Rangeのところを(2)の様に変更したら、うまくいきました。ただ、自分としては、(1)のようにRangeの中にCellsを使う書き方でやりたいのですが、そのようにはできないでしょうか。  なお、マクロ初心者なので、簡単な表現でお願いします。 (1) Sub グラフ挿入_Macro() Set Grp1 = Sheets("グラフ1").ChartObjects.Add(10, 10, 500, 200) Grp1.Chart.SetSourceData _ Source:=Sheets("データ").Range(Cells(3, 1), Cells(10, 2)), _ PlotBy:=xlColumns End Sub (2) Sub グラフ挿入_Macro() Set Grp1 = Sheets("グラフ1").ChartObjects.Add(10, 10, 500, 200) Grp1.Chart.SetSourceData _ Source:=Sheets("データ").Range("A3:B10"), _ PlotBy:=xlColumns End Sub

  • 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

  • エクセルのグラフで

    エクセルのグラフ(散布図による折れ線グラフ)で系列(各線)の名前に下付き文字を使うことはできるのでしょうか?できるならどうすればいいのでしょうか? エクセル2000です。

  • Excel VBAでグラフを作成したい

    今、下記の ように参考書のコードを書き写し実行しましたが、実行時エラーが出ます。 Sub グラフ作成()   With Worksheets("sheet1").ChartObjects     .Add(230, 10, 250, 180).Chart      .SetSourceData Range("A3").CurrentRegion     .ChartType = xlColumnClustered   End With End Sub    実行時エラー '438' オブジェクトはこのプロパティまたはメソットをサポートしていません。  と出ます、何が間違いなのかわかりません、私の間違っているところを教えた頂けませんか。お願いします。   

  • エクセルグラフの縦軸

    エクセルのグラフについて質問させていただきます。 グラフ作成すると(折れ線、散布図等)決まって縦軸が、ある数値および縦軸名となってしまいます。そのような数値と名前はエクセルシート上にはないのですが、新規作成しても同様の縦軸となってしまうのです。 エクセルバージョンは2000です。

  • 自動でグラフを作成するソフトを探しています

    CSVのデータを取り込み、折れ線グラフを自動で作成し、画像で出力してくれるフリーソフトを探しています。 CSVファイルが多く(約500)、また毎日データが追加される為、Excelのグラフ機能で1つ1つ作成する方法は手間がかかり過ぎてできません。 Vectorで探してみましたが、散布図や3Dのソフトはあるものの、単純にCSVを折れ線グラフにするソフトが見つかりませんでした。 Rも触ってみたのですが、プログラミングの知識がなく、エラーばかりで作成まで漕ぎ着けられませんでした。 求める機能は以下の通りです。 ・CSVデータを取り込んでグラフ化できる ・グラフを画像で出力できる ・(可能であれば)複数のCSVファイルを一括で処理できる オススメのソフトがありましたら、ぜひご教示下さい。

  • excelでグラフを作成しているのですが、どのように作成したよいかがわ

    excelでグラフを作成しているのですが、どのように作成したよいかがわかりません。 グラフはX軸にある数値、Y軸にもある数値、この組み合わせで6名の項目軸があります。 さらに6名についてを1、2、4週と変化がわかるようなグラフを作りたいです。 散布図か折れ線グラフ化とは思いますが、どのようにおこなえばよいかがわかりません。 よろしくお願いします。

  • Excel VBAでグラフ作成。A,C列をx値, B,D列をy値にした複数プロット

    ExcelのVBAでグラフをChartType = xlXYScatterLinesでグラフを作っています。仮に各列10行でAからF列までデータがあるとします。 Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170) With chartObj.Chart .ChartType = xlXYScatterLines .SetSourceData Worksheets(1).Range("A1:F10"), _ PlotBy:=xlColumns .HasLegend = False End With 上記のようにしてしまうと、x値がA1:A10で、y値がB1:B10,C1:C10・・・・のプロットが5本作成されてしまいます。 以下のようにするにはどうすればよろしいでしょうか。 第一のプロットはx値をA1:A10, y値をB1:B10としてグラフを作成します。次にこのグラフにx値をC1:C10, y値をD1:D10とした第二のプロットを追加、同様に第三はx値をE1:E10, y値をF1:F10としてプロットを追加したグラフを作成したいのですが、このようなグラフはVBAで作成可能でしょうか。 本番のグラフは行数と列数はいろいろな場合があるので、行数と列数のパラメータに任意の値を代入し、Forループで様々な形態に対応できるものを作りたいと考えています。

  • VBAで散布図を作成したのですが・・・

    VBAで散布図を作成したいのですがうまくいかないで困っています。 この散布図はA行とB行をそれぞれ軸として指定しているのですがうまくX軸、Y軸に指定されず2本のグラフが表示されてしまいます。 また範囲指定をC1を変数としてA1からB○まで取りたいのですが最初の範囲指定はうまくいったのですが最後の行の指定がうまくいかずエラーになってしまいます。 (○は"C1の値+4"にしたいのです。) よろしければ何かヒントでもいいので教えていただけないでしょうか?よろしくお願いします。 (私が書いたVBA↓) Sub chart1() Dim sh1 As Worksheet Set sh1 = Worksheets("Sheet1") Dim i As Integer i = Range("C1").Value + 4 Range(Cells(1, 1), Cells(i, 2)).Select Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(Cells(1, 1), Cells(i, 2))

専門家に質問してみよう