tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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: 現状と同じ

以上、よろしくお願い致します。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。