2009-03-05 12 views
2

私はC++アンマネージドとExcel 2007で作業しています。Excel4 APIの呼び出しを使用して、ユーザーが選択したセルの範囲を取得しています。Excel 2007で最後のアクティブセルを取得する方法

ユーザーが「共通」範囲と呼ぶものを選択すると、この呼び出しは「R1C1:R4C3」のような範囲を返します。これは、アプリケーションで他の操作を行うために必要な形式です。

ただし、ユーザーが列全体を選択すると、このAPI呼び出しは「C1:C3」のような列を含む範囲のみを返しますが、これはもちろん有効なExcel範囲ですが、上記の範囲のように変更する必要があります。つまり、手動で行範囲を追加する必要があります。

私はこの範囲 "C1C3"を取って "R1C1:R65534C3"に変更します。

おそらくこの時点で私の問題に気付いたことがありますが、Excel 2003でサポートされている行の最大数になるように行範囲をコーディングするのは難しいです(このバージョンのExcelでも動作します)。

これは当然、私が探しているものではありません。選択範囲を取得すると、その範囲の情報を読み取り、その情報を使用してサーバーに照会します。行534までのデータであり、依然として私のクエリは何も持たない65000行を有する。

私の質問は、ユーザーがデータを入力した最後のセルを取得する方法です。最後のアクティブセルと呼ばれていると思いますので、その行まで範囲を区切り、作業していますアンマネージコード。

+0

は、 "入力されたデータを" 定義取得します。セルには内容が必要ですか?ヌル出力( "")を生成する式はどうでしょうか?目に見えるセルの書式はどうですか?目に見えないセルの書式設定(空白のセルでは太字)はどうですか?適用される条件付き書式はどうですか?それは当てはまりませんか? – Sparr

答えて

3

Excel 4 API?本当に?

コマンドxlcSelectEndを使用して、指定されたセルから任意の方向にテキストが入力された最後のセルにジャンプすることができます。

1

Rangeオブジェクトにrange.selectionをキャストしてみてください。

0

領域が最後に使用した行

 Excel.ApplicationClass app = new Excel.ApplicationClass(); 
     Excel.Workbook workBook = app.Workbooks.Open(_PathFile, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value, 
       System.Reflection.Missing.Value); 
     // Get the active worksheet using sheet name or active sheet 
     Excel.Worksheet workSheet = (Excel.Worksheet)workBook.ActiveSheet; 
     // Find the last real row 
     int _InLastRow = workSheet.Cells.Find("*",System.Reflection.Missing.Value, 
      System.Reflection.Missing.Value, System.Reflection.Missing.Value, Excel.XlSearchOrder.xlByRows,Excel.XlSearchDirection.xlPrevious, false,System.Reflection.Missing.Value,System.Reflection.Missing.Value).Row; 
#endregion 
関連する問題