none
Visual C++ からExcel2003のグラフの目盛線を表示させる RRS feed

  • 質問

  • Visual C++ からExcel2003のグラフの目盛線を表示させようとしています。
    グラフの軸は、
    pChartObject->GetChart()->PutHasAxis(xlValue,xlPrimary,true);
    で表示できるのですが、目盛線が表示できません。
    PutHasMajorGridlines(true);
    を使えばいいと思うのですが、使い方が分かりません。
    設定方法を教えて下さい。宜しくお願い致します。
    2010年2月4日 2:33

回答

  • 以下の流れでどうでしょうか。

    IChartObject::GetChart()->Chart::Axes()->IAxes::raw_Item()->IAxis::PutHasMajorGridlines()
    (Excel 2003の表記と微妙に異なるかもしれません)

    別件です。
    PutHasAxis/PutHasMajorGridlinesでtrueを渡していますが、
    正しいですか?
    引数の型は、VARIANT_BOOLになっていませんか?

    その場合、以下のようになります。
    true : VARIANT_TRUE
    false : VARIANT_FALSE

    trueは1ですが、VARIANT_TRUEは-1です。
    falseは両方0です。
    • 回答としてマーク One_Stone 2010年2月5日 4:13
    2010年2月4日 22:46

すべての返信

  • 以下の流れでどうでしょうか。

    IChartObject::GetChart()->Chart::Axes()->IAxes::raw_Item()->IAxis::PutHasMajorGridlines()
    (Excel 2003の表記と微妙に異なるかもしれません)

    別件です。
    PutHasAxis/PutHasMajorGridlinesでtrueを渡していますが、
    正しいですか?
    引数の型は、VARIANT_BOOLになっていませんか?

    その場合、以下のようになります。
    true : VARIANT_TRUE
    false : VARIANT_FALSE

    trueは1ですが、VARIANT_TRUEは-1です。
    falseは両方0です。
    • 回答としてマーク One_Stone 2010年2月5日 4:13
    2010年2月4日 22:46
  • >以下の流れでどうでしょうか。
    >IChartObject::GetChart()->Chart::Axes()->IAxes::raw_Item()->IAxis::PutHasMajorGridlines()
    >(Excel 2003の表記と微妙に異なるかもしれません)

    そのままでは、うまくいきませんでしたが、下記の方法で出来ました。流れは合っていました。

    _ChartPtr pChart = pChartObject->GetChart();
    AxisPtr xaxis, yaxis;
    xaxis = pChart->Axes(xlCategory,xlPrimary);
    xaxis->PutHasMajorGridlines(true);
    yaxis = pChart->Axes(xlValue,xlPrimary);
    yaxis->PutHasMajorGridlines(true);

    >別件です。
    >PutHasAxis/PutHasMajorGridlinesでtrueを渡していますが、
    >正しいですか?
    >引数の型は、VARIANT_BOOLになっていませんか?
    >その場合、以下のようになります。
    >true : VARIANT_TRUE
    >false : VARIANT_FALSE

    true,VARIANT_TRUE、いずれを使っても表示になりますし、
    false,VARIANT_FALSE、いずれを使っても非表示になります。

    PutHasMajorGridlinesは、引数の型がVARIANT_BOOL になっていますが、
    PutHasAxisは、_variant_t になっています。
    Visual C++ 2005 , Excel2003 の組み合わせですが、問題ないようです。
    大変参考になりました。ありがとうございました。
    2010年2月5日 4:27
  • 蛇足かもしれませんけれど、

    > true,VARIANT_TRUE、いずれを使っても表示になりますし、
    > false,VARIANT_FALSE、いずれを使っても非表示にな ります。

    多分ですが、内部の判定がVARIANT_FALSEで判定しているからでしょうね。
    データ型としては、VARIANT_BOOLなのでしたらVARIANT_TRUEかVARIANT_FALSEを使うべきと思います。
    結果的に動く事と正しいコードであると言う事は別の話ですから。

    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。
    2010年2月5日 5:18