none
Excel での範囲指定に、セルを表す"A1"を数値のみで表すには? RRS feed

  • 質問

  • Excel での範囲指定の設定方法を"A1"というような文字列ではなく、VBAにあるようなCells(1, 1) などという数値のみでの設定をしたいのですが、そんな方法はないのでしょうか?

    よろしくお願いします。

    2010年8月22日 13:19

回答

  • まさしく、ご自分のお書きになっているコードの数行上に答えがあります

    CellsはWorkSheetのプロパティであることを考えれば良いです。 

    oSheet.get_Range(oSheet.Cells[1, 1], oSheet.Cells[4, columns]).Font.Bold = true;
    

     

    • 回答としてマーク yasheeki 2010年8月24日 12:52
    2010年8月22日 18:02

すべての返信

  • どういった状況でしょうか?
    「したい」というのは簡単なのですが、どういった前提なのかを書かないと話ができません。
    今の内容だと、Excel 上の使い方の話の可能性も残りますので。

    C# から Excel を操作するのであれば、VBA と似たようなことができるはずです。
    ただ、書き方が若干違うとは思いますが。。。
    VBA で書いたりしたことを C# で実現したいのであれば、VBA ならこのように書くというスニペット(コードの一部)を書いてどこがわからないなど、具体的な質問をしましょう。

    (念のため)
    C# からではなく、純粋に Excel の使い方の質問なら、Answers ですべきです。
    http://answers.microsoft.com/ja-jp/default.aspx
    MSDN Forums はあくまで開発観点なので。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2010年8月22日 13:37
    モデレータ
  • 説明不足で申し訳ありません。

    例えば、DataTable dt を受けて、
                Excel.Application oXL = null;
                Excel._Workbook oWB;
                Excel._Worksheet oSheet;
                Excel.Range oRng;

                    oXL = new Excel.Application();
                    oXL.Visible = true;

                    oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
                    oSheet = (Excel._Worksheet)oWB.ActiveSheet;

                    int columns = dt.Columns.Count;

                    for (int i = 0; i < columns; i++)
                    {
                        oSheet.Cells[1, i + 1] = tbl.Columns[i].ColumnName.ToString();
                    }

                    oSheet.get_Range("A1", "D1").Font.Bold = true;

    などと、続くコードの中で、最後の("A1", "D1")を数値のみで表す方法を知りたいと思っています。
    なお、別のメソッドなどで、数値を"A1"などの文字列に変換するコードを書くという方法もあろうかと思いますが、上記の方法ですと、columns を"D" に変換しなければなりません。
    Excel VBA で、Range("A1", "D1")と書く代わりに、Range(Cells(1, 1), Cells(1, columns))と書くような方法でできないでしょうか?

    よろしくお願いします。

    • 編集済み yasheeki 2010年8月22日 15:30 間違い修正
    2010年8月22日 15:09
  • まさしく、ご自分のお書きになっているコードの数行上に答えがあります

    CellsはWorkSheetのプロパティであることを考えれば良いです。 

    oSheet.get_Range(oSheet.Cells[1, 1], oSheet.Cells[4, columns]).Font.Bold = true;
    

     

    • 回答としてマーク yasheeki 2010年8月24日 12:52
    2010年8月22日 18:02
  • C# で Excel を操作するなら、以下のページに Tips がまとまっています。

    http://hp.vector.co.jp/authors/VA014436/prg_memo/c_sharp/tips/000.html

    http://www.din.or.jp/~graywing/csharp_excel.html

    参考にどうぞ。

     

     


    なかむら(http://d.hatena.ne.jp/griefworker)
    2010年8月22日 21:21
  • ありがとうございます。

    ご提示のコードが有効でした。

    2010年8月24日 12:51
  • ありがとうございます。

    C# での Excel 操作の参考にさせていただきます。

    2010年8月24日 12:52