質問

C ++アンマネージドおよびExcel 2007を使用しています。Excel4APIの呼び出しを使用して、ユーザーが選択したセル範囲を取得しています。

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

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

だから私はこの範囲「C1C3」を取ります;それを「R1C1:R65534C3」に変更します。

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

もちろん、これは私が探しているものではありません。選択した範囲を取得したら、その範囲の情報を読み取り、その情報を使用してサーバーにクエリを作成します。 534行目まで、クエリには65000行があり、何もありません。

だから私の質問は、ユーザーがデータを入力した最後のセルを取得するにはどうすればよいですか、最後のアクティブセルと呼ばれると思うので、その行まで範囲を区切ることができ、管理されていない状態で作業していることを覚えておいてくださいコード。

役に立ちましたか?

解決

Excel 4 API?本当に?

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

他のヒント

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

region最後に使用した行を取得

     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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top