C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

Excelを開くコードで例外が出る /masaX (21/10/30(Sat) 12:20) #98311
Re[1]: Excelを開くコードで例外が出る /くま (21/10/30(Sat) 13:12) #98312
  └ Re[2]: Excelを開くコードで例外が出る /masaX (21/10/30(Sat) 14:06) #98313
    └ Re[3]: Excelを開くコードで例外が出る /masaX (21/10/30(Sat) 14:36) #98315
      └ Re[4]: Excelを開くコードで例外が出る /くま (21/10/30(Sat) 15:16) #98317
        └ Re[5]: Excelを開くコードで例外が出る /masaX (21/10/30(Sat) 16:26) #98318 解決済み


親記事 / ▼[ 98312 ]
■98311 / 親階層)  Excelを開くコードで例外が出る
□投稿者/ masaX (10回)-(2021/10/30(Sat) 12:20:22)

分類:[VB.NET/VB2005 以降] 

すみません
先日、エクセルが文字化けする件でアドバイスをいただいて無事に開く事ができるようになったのですが
勉強の為にその後、レイトバインディングでは無い方法(普通の方法になるんですか?)でExcelを開くプログラムでも
テストしてみたくて、ここのサイトの「既存の Excel ブックを開く」のコードをそのまま使ったプログラムを
書いてみたのですが

Imports Microsoft.Office.Interop
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' Excel.Application の新しいインスタンスを生成する
        Dim xlApplication As New Excel.Application()
        Dim xlBooks As Excel.Workbooks

        ' xlApplication から WorkBooks を取得する
        xlBooks = xlApplication.Workbooks

        ' 既存の Excel ブックを開く
        xlBooks.Open("C:\Users\m-sugimoto\Desktop\エクセルテスト2.xlsx")

        ' Excel を表示する
        xlApplication.Visible = True

        'xlBook = xlApplication.Open("C:\Users\m-sugimoto\Desktop\エクセルテスト2.xlsx")
    End Sub
End Class

6行目の
xlBooks = xlApplication.Workbooks 
この行で

「System.InvalidCastException型
Microsoft.Office.Interop.Excel.ApplicationClassのCOMオブジェクト
をインターフェイス型 Microsoft.Office.Interop.Excel.Applicationに
キャストできません。」

と出ます。
上記のプログラムは仕事場のPCで書いたのですが
なぜか、同じコードを自宅のPCで書いて実行すると、問題なく開きます。


仕事場のPCにはOffice2019が入っており、VisualStudio2019で実行しました。
自宅のPCにはOffice2007が入っており、こちらもVisualStudio2019で実行しました。
仕事場のPCでは参照に Microsoft Excel 16.0 Object Libraly が
自宅のPCでは参照に Microsoft Excel 12.0 Object Libraly が入ってるのですが
このあたりに問題があるのでしょうか。

また御教授いただけると嬉しいです。

[ □ Tree ] 返信 編集キー/

▲[ 98311 ] / ▼[ 98313 ]
■98312 / 1階層)  Re[1]: Excelを開くコードで例外が出る
□投稿者/ くま (22回)-(2021/10/30(Sat) 13:12:01)
検索で見つけたのが

■Microsoftが提供する「Office プライマリ相互運用機能アセンブリ」
https://docs.microsoft.com/ja-jp/visualstudio/vsto/office-primary-interop-assemblies?view=vs-2019
がインストールされていれば、
〜 AS Microsoft.Office.Interop.Excel.Application
または
Imports Microsoft.Office.Interop
〜 As Excel.Application

インストールしてなけば、「プロジェクト用の相互運用機能アセンブリが生成され」て、その場合、
〜 As Excel.Application

■方法 : Office のプライマリ相互運用機能アセンブリをインストールする」
http://msdn2.microsoft.com/ja-jp/library/kh3965hw(VS.80).aspx)

[ 親 98311 / □ Tree ] 返信 編集キー/

▲[ 98312 ] / ▼[ 98315 ]
■98313 / 2階層)  Re[2]: Excelを開くコードで例外が出る
□投稿者/ masaX (11回)-(2021/10/30(Sat) 14:06:58)
No98312 (くま さん) に返信

早速のアドバイスありがとうございます。

> ■Microsoftが提供する「Office プライマリ相互運用機能アセンブリ」
> https://docs.microsoft.com/ja-jp/visualstudio/vsto/office-primary-interop-assemblies?view=vs-2019
> がインストールされていれば、
> 〜 AS Microsoft.Office.Interop.Excel.Application
> または
> Imports Microsoft.Office.Interop
> 〜 As Excel.Application
>
> インストールしてなけば、「プロジェクト用の相互運用機能アセンブリが生成され」て、その場合、
> 〜 As Excel.Application
>
> ■方法 : Office のプライマリ相互運用機能アセンブリをインストールする」
> (http://msdn2.microsoft.com/ja-jp/library/kh3965hw(VS.80).aspx)


なぜか、Access2019を新たにインストールしたところ無事に例外が出ずに開くようになりました。
Accessをインストールする事で何か足りなかったものがインストールされたんでしょうか?





[ 親 98311 / □ Tree ] 返信 編集キー/

▲[ 98313 ] / ▼[ 98317 ]
■98315 / 3階層)  Re[3]: Excelを開くコードで例外が出る
□投稿者/ masaX (12回)-(2021/10/30(Sat) 14:36:23)
改めてVisualStudioを見てみると
Access2019を入れる前までは参照入ってたのが
単なる「Excel」だったような気がするのですが、Access2019を入れた今
参照が「Microsoft.Office.Interop.Excel」になってます。
あまり確かな記憶では無いのですが、このあたりに原因があるのでしょうか?

[ 親 98311 / □ Tree ] 返信 編集キー/

▲[ 98315 ] / ▼[ 98318 ]
■98317 / 4階層)  Re[4]: Excelを開くコードで例外が出る
□投稿者/ くま (23回)-(2021/10/30(Sat) 15:16:42)
インストールのHPに記載がある通り

> Office のインストール時に PIA(Office プライマリ相互運用機能アセンブリ) をインストールするには
> .NET Framework のバージョンが 2.0 以降であることを確認します。
> Microsoft Office をインストールします。このとき、拡張するアプリケーションの .NET プログラミング サポート 機能が選択されていることを確認します
> (この機能は既定のインストールに含まれています)。

つまりPIAを使用するには「VisualStudio」がインストールされている状態で「Office」をインストールしてくださいという事です。

PIAに関しては魔界の仮面弁士さんが以前別サイトで書かれていた内容に詳しい記載があります。
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=10895
[ 親 98311 / □ Tree ] 返信 編集キー/

▲[ 98317 ] / 返信無し
■98318 / 5階層)  Re[5]: Excelを開くコードで例外が出る
□投稿者/ masaX (13回)-(2021/10/30(Sat) 16:26:38)
> つまりPIAを使用するには「VisualStudio」がインストールされている状態で「Office」をインストールしてくださいという事です。

という事は、Access2019をインストールした事で、それが行われたと考えれば良かったのですね。
そう言えば、この仕事場のPCは先に「Office2019」がインストールされている上からVisualStudio2019をインストールしました。
VisualStudio2019を先にインストールしていれば問題は起こらなかったのかも知れないと考えれば良かったですか?

> PIAに関しては魔界の仮面弁士さんが以前別サイトで書かれていた内容に詳しい記載があります。
> http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=10895

ここはすみません、私の知識では理解できない内容でした。


知識不足のため理解できていないところもありますが
解決とさせていただきます。

ありがとうございました。
解決済み
[ 親 98311 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -