none
JScriptでエクセルのグラフ作成を自動化する RRS feed

  • 質問

  • JScriptでコードを書き、test.htaを作成します。

    test.hta実行すると、テキストファイルを読み込み、エクセルを起動し、グラフを自動生成するというものです。

    excel2003の場合、正常に終了しますが、excel2007を使用すると、下記のコードの//★マーク部でこけます。

    ※ エラー内容:オブジェクトはサポートされていません。です。

    /////下記がコードです。

     var excel = new ActiveXObject("Excel.Application");

    (省略)

      excel .ActiveSheet.ChartObjects.Add(px,py,gx,gy).Select;//★
      excel .ActiveChart.SeriesCollection.Add(excel .Range("B3:B"+p));//★
      chart_style(excel .ActiveChart);//★

    (省略)

    excelのバージョンにより、使い方が異なるのでしょうか?

    どなたか、御教授願います。

    2012年3月28日 7:33

すべての返信

  • 下記コードをテキスト ファイル CreateExcelChartTest.js として保存し、コマンドラインから

    WScript CreateExcelChartTest.js

    と入力してください。

    //var excel = new ActiveXObject("Excel.Application.12"); // Excel 2007 を明示的に起動。
    var excel = new ActiveXObject("Excel.Application"); // インストールされている最新版の Excel を起動。
    excel.Visible = true;
    excel.Workbooks.Add();
    var activeSheet = excel.ActiveSheet;
    for (i = 1; i <= 10; ++i) {
    	activeSheet.Range("A" + i.toString(10)).Value = i;
    	activeSheet.Range("B" + i.toString(10)).Value = i * 0.1;
    }
    var x1 = 200, y1 = 200, x2 = 300, y2 = 300;
    var addedChart = activeSheet.ChartObjects().Add(x1, y1, x2, y2);
    //addedChart.Select(true);
    addedChart.Select(); // 引数は省略可能。
    excel.ActiveChart.SeriesCollection.Add(activeSheet.Range("A1:B10"));

    VB/VBA の場合は引数なしのメソッド呼び出しは丸カッコを省略できるので一見プロパティに見えるようなものがありますが、JScript の場合はきちんと丸カッコを書く必要があります。

    メソッド チェーンを使わずに、ちゃんとオブジェクトをローカル変数に格納していくと、エラー原因が分かりやすくなります。

    なお、質問する場合は、コード中で使っている変数が何なのか、くらいはすべて書きましょう。

    前半の(省略)は、やりすぎです。

    ちなみに chart_style() は何ですか? 自作の関数ですか?

    可能な限りすべてのコードを載せないと、誰も質問内容を理解できません。



    • 編集済み sygh 2012年4月16日 18:00
    2012年4月13日 15:27