none
excel comオブジェクトが正常に動作しない? RRS feed

  • 質問

  • お世話になっております。

    質問の場所が違ってたら申し訳ありません。

    環境:
    Windows7
    Excel2013

    Excelを開き、データを展開後にグラフ化をしております。

    毎回グラフを作成するのは、労力がかかるため、基本グラフ設定を終えたグラフを配置し
    テンプレートとして保存しています。

    テンプレートを開き、データソースを設定するのですが適応されたデータは時刻が全て”0:00:00”となります。

    コード:
    shape.Chart.SetSourceData(sheetData.get_Range("A1:G38"));

    Excelから直接”データを選択”⇒”グラフデータの範囲”にて選択すると

    正常に時刻が表示されます。

    マクロの記憶から実際の動作を記録するも、行っている動作は上記のコードだけです。
    特別な動作をしているわけではありません。

    どうすれば、正常にデータが適用されますでしょうか?

    どうか、ご教示ください。

    • 移動 星 睦美 2013年12月13日 4:24 Visual C# から
    • 移動 星 睦美 2013年12月13日 6:36 スレッド移動を訂正
    2013年12月13日 2:50

すべての返信

  • どこまでできて、どこまでできていないのかを確認し、問題を絞った方が良いでしょう。

    1.まず、C#からテンプレートから作成させるブックの操作はできているのか? 例えば、あるセルに値が書き込めるか?など。

    2.Chartのコントロールはできるのか? 色などChartのプロパティを実際に変更し、それが反映されるか?など。

    3.SetSourceDataが反映されているか? 反映されていれば、その範囲にある値を弄った時に、それがグラフに反映されるのか?


    うまく動作しない時は、動作を単純にし、どこに問題があるのかを絞り、原因に近づきましょう。そうしなければ、

    >どうすれば、正常にデータが適用されますでしょうか?

    への解決は、遠回りになる可能性が高くなります。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2013年12月13日 4:39
    モデレータ
  • trapemiyaさん、ご回答ありがとうございます。

    ご確認の項目ですが、全て操作可能であり、ステップ実行により適用されていることを
    確認しております。

    SetSourceDataについては、値を変更した時にグラフも同時に変更されます。

    つまり、Excelの操作は通常通り行えているのですが、このSetSourceDataだけ
    がおかしいのです。

    星 睦美さん:

    VBAに移動とのことですが、Excelからの直接操作およびVBAからの操作、ともに
    正常動作しておりExcel COMオブジェクトからのアプローチのみこの現象が発生します。
    移動場所は、こちらでよかったのでしょうか?


    2013年12月13日 5:38
  • フォーラム オペレーターの星 睦美です。

    私のほうでも質問にお役にたつ情報がないか、trapemiya さんからの確認ポイントのアドバイスとコーベルさんが返信された内容を手がかりに検索してみたところ、(キーワードはC#、Excel、SetSourceData )

    Visual C# で Excel を自動化して、配列による範囲内へのデータ入力および範囲内からのデータ取得を行う方法のマイクロソフト サポート情報があります。

    上記のサポート情報の詳細に「複数セルの範囲に一括で値を入力するには、Range オブジェクトの Value プロパティを 2 次元配列に設定します。同様に、Value プロパティを使用することにより、複数のセルに入力された 2 次元配列の値を一括で取得することができます。」とあり、なにかヒントになるかもと思いましたので参考までにご紹介させていただきますね。



    フォーラム オペレーター 星 睦美 - MSDN Community Support



    2013年12月13日 6:52
  • 参考情報ありがとうございました。

    値の取得、設定は通常通りできております。

    既存のシートに値を展開後、SetSourceDataを行うと
    データは展開されるが、時間だけおかしくなる。というものです。

    今回は時間がないので、

    既存グラフにデータを適用 させるのではなく
    既存のデータからグラフを新規作成 させることで対応しました。

    2013年12月16日 0:40