私は C++ unmanaged と Excel 2007 を使用しています。Excel4 API への呼び出しを使用して、ユーザーが選択したセルの範囲を取得しています。
ユーザーが「共通」範囲と呼ぶものを選択すると、この呼び出しは「R1C1:R4C3」のような範囲を返します。これは、アプリケーションで他の操作を行うために必要な形式とまったく同じです。
ただし、ユーザーが列全体を選択することを決定した場合、この API 呼び出しは列のみの範囲を返します。これは「C1:C3」のようなもので、もちろん有効な Excel 範囲ですが、変更する必要があることを意味します。上記の範囲のように見えます。つまり、行の範囲に手動で追加する必要があります。
したがって、この範囲「C1C3」を「R1C1:R65534C3」に変更します。
おそらく、この時点ですでに私の問題に気付いていると思います。行の範囲を、Excel 2003 でサポートされる最大行数になるようにハードコーディングしていることがわかります (このアプリケーションは、このバージョンの Excel でも動作します)。
もちろん、これは私が探しているものではありません。選択した範囲を取得したら、その範囲の情報を読み取り、その情報を使用してサーバーにクエリを作成するため、ユーザーが行 534 までのデータのみを入力したと想像してください。それでも私のクエリには何もない65000行があります。
私の質問は、ユーザーがデータを入力した最後のセルを取得する方法です。これは最後のアクティブ セルと呼ばれているので、その行まで範囲を区切ることができます。アンマネージ コードで作業していることを覚えておいてください。