「使用範囲」を選択しようとしています。ワークシートの UsedRange を取得し、その上で Select 関数を呼び出します。select 呼び出しで HRESULT 0x800a03ec を受け取ります。
コードは次のとおりです。
COleVariant の結果。
HRESULT hr = AutoWrap(DISPATCH_METHOD, &result, irange, L"Select", 0);
AutoWrap 関数のコードをわざわざ投稿するつもりはありません (誰かが尋ねない限り)。それはかなり有名で、私はそれを変更していません。
私は irange が良いことを確信しています。なぜなら、私が期待したものを持っていることを確認するためにいくつかの呼び出しを試みたからです。それを繰り返し処理すると、各セルの内容を確認できます (そしてそれは正しいです)。返される行と列の数は正しく、返される "Address" プロパティはチェックアウトされます。
ワークシートはロックされていません。
Locale に関係する他の問題が投稿されているのを見たことがあります。私のシステムは、ユーザー アカウントと同様に米国英語に設定されています。どちらも変更されていません。
誰かが助けてくれることを願っています!
更新:私も試しました
hr = iRange->Select(vResult);
これは S_OK を返しますが、範囲は選択しません。通常、iRange 構造体の関数を直接呼び出すことはできません。結果は gpf またはアクセス違反です。そのため、autowrap 関数を使用する必要があります (Invoke 呼び出しを実行するため)。この呼び出しが機能しないことに驚きはありません。
ロックされた場合に備えて、Excel ファイルを非読み取り専用モードで開いてみました。これで問題は解決しませんでした。範囲から 1 つの項目 (セル) を取得し、その Select を呼び出すことで個々のセルを選択できますが、範囲を選択することはできません。