タイトル : Re^2: Excel2016のセル操作 投稿日 : 2017/10/23(Mon) 18:03 投稿者 : aMa
> 当方では現象を確認できておりませんが、まずは > 「開発環境の Excel バージョン」と > 「実行環境の Excel バージョン」が > 一致しているかどうかを確認しておいてください。 > 違っている場合は、それぞれのバージョンを確認しておきましょう。 > また、特定のバージョンのみで起こる問題というものもありますので、 > Excel 2016 の正確なバージョンも調べておいたほうが良いと思います。 > https://social.msdn.microsoft.com/Forums/ja-JP/6cc8f54d-5502-43ef-bee8-15e52cbbce9e/excel2016workbookopen?forum=vbajp 遅くなり申し訳ありません。 WindowsVista/Excel2007(12.0.6747.5000)SP3 MSO(12.0.6743.5000)で、Microsoft Visual Basic 2010Expressで作成中のプロジェクトを、Windows10/Excel2016MSO(16.0.8431.2046)32ビットにコピーして、Microsoft Visual Basic 2010Expressでデバグを続行しようとした時の問題です。 「System.InvalidCastException はハンドルされませんでした。 型'System.__ComObject'のCOMオブジェクトをインターフェイス型'Microsoft.Office.Interop.Excel.Range'にキャストできません。 IID'{00020846-0000-0000-C000-000000000046}'が指定されたインターフェイスのCOMコンポーネント上でのQueryInterface呼び出しのときに次のエラーが発生したため、この操作に失敗しました インターフェイスが登録されていません(HRESULTからの例外:0x80040155)。」 ・・・とエラーが表示されます。 ちなみに、Microsoft Visual Studio 2017でデバグした時は、 「System.InvalidCastException が発生しました(以下の内容は同文)」・・と出ます。 また、.exeファイルを直接起動した時は、「・・・ハンドルされていない例外発生・・・続行/終了」・・・と出て、続行してExcelを閉じる操作ができます。(その他の動作はデバグ中なので、正しいかどうかは不明です。) > > xlRange = xlSheet1.Range(bbb) > > の行にエラーが出ます。bbbにはB19の様な値が入ります。 > (1) bbb のデータ型は何ですか? String? Object? Range? bbb のデータ型はStringです。Objectとした場合も同じでした。 > (2) エラーになるのは「Range プロパティからの取得」時でしょうか? > それとも、「Range 型変数への代入」時でしょうか? > Dim o As Object = xlSheet1.Range(bbb) > Dim xlRange As Excel.Range = TryCast(o, Excel.Range) エラーになるのはRangeプロパティからの取得の時になると思います。(セルを読み取る時です。) 対象行の直前に Dim o As Object = xlSheet1.Range(bbb) Dim xlRange As Excel.Range = TryCast(o, Excel.Range) を記載してみましたが、1行目に「InvalidCastExceptionはハンドルされませんでした。」が出ます。 (何をしているのか理解できていません。) > (3) レイトバインドで実行した場合はどうなりますか? > Dim o As Object = CallByName(Nothing, "Range", CallType.Get, bbb) 対象行の直前に Dim o As Object = CallByName(Nothing, "Range", CallType.Get, bbb) を記載してみましたが、1行目に「NullReferenceExceptionはハンドルされませんでした。」が出ます。 (何をしているのか理解できていません。) > (4) ソリューション エクスプローラーで[すべてのファイルを表示]にした後、 > [参照設定]フォルダー内にある Excel ライブラリのプロパティで > 『相互運用型の埋め込み』および『分離』の True/False を > 変更してみた場合、結果に違いが出ますか? 相互=True/分離=False: 現状 相互=True/分離=True: ビルドエラー 相互=False/分離=True: ビルドエラー 相互=False/分離=False: 現状と同じ 以上、よろしくお願い致します。 |