[解決済み] VB: タイプライブラリ/DLL の読み込みにエラーが発生しました。(HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY) からの例外)
質問
私は、Excelからデータをインポートする必要があるアプリに取り組んでいます。
私の解決策は
Microsoft.office.Interop.Excel.
しかし、デバッグをするとこのようなエラーが発生します。
Message=Unable to cast COM object of type Microsoft.Office.Interop.Excel.ApplicationClass' からインターフェースタイプ 'Microsoft.Office.Interop.Excel._Application' です。この操作は失敗しました。 インターフェイスのCOMコンポーネントでQueryInterfaceを呼び出したためです。 IID '{000208D5-0000-0000-C000-000000000046}' は、次の理由で失敗しました。 次のようなエラーが発生しました。Error loading type library/DLL. (からの例外 HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))
以下、私のコードです。
Imports Excel = Microsoft.office.Interop.Excel
Private Sub BExcel1_Click(sender As Object, e As EventArgs) Handles BExcel1.Click
OpenFileDialog1.Filter = "Excel Files|*.xlsx; *.xls; *.xlsm"
If (OpenFileDialog1.ShowDialog() = DialogResult.OK) Then
ExcelPath1.Text = OpenFileDialog1.FileName
End If
Dim XlApp As New Excel.Application
Dim XlWorkBook As Excel.Workbook
Dim XlWorkSheet As Excel.Worksheet
XlWorkBook = XlApp.Workbooks.Open(ExcelPath1.Text)
End Sub
以下のような解決策をググってみたのですが、うまくいきませんでした。
- Officeを修復しました。
- Visual Studioを修理しました
-
レジストリエディタを利用して
Computer\HKEY_CLASSES_ROOT\TypeLib\
が、その下にある00020813-0000-0000-C000-000000000046
私は1.9のバージョンを得た、それは2つのバージョン間の競合のようではないようです?
この問題を解決するためのアイデアはありますか?
VS version:2017 community
Excel version:2016
Microsoft.Office.Interop.Excel version:15.0.0.0
解決方法は?
まず、Visual Studioを
/ResetUserData
コマンドライン引数で指定します。それについては
Team Explorer 2008からMicrosoft Excelへのエクスポート時に、エラー "COMオブジェクトをキャストできません..."が発生する。
の記事で紹介しています。
明らかに、間違ったバージョンのExcelに接続しようとしています。古いバージョンのOfficeをアンインストールした後に、余分なWindowsレジストリキーが残っているか、その逆の場合もあるようです。とにかく、次のページを見てください。 "Microsoft.Office.Interop.Excel.ApplicationClass' 型の COM オブジェクトを 'Microsoft.Office.Interop.Excel._Application' というインターフェース型にキャストできない" を解決する方法 のブログ記事で、まったく同じ問題を説明しています。基本的には、Windowsレジストリにある間違ったエントリを見つけ、それを削除する必要があります。
ちなみに、プロジェクトに新しいCOMリファレンスを追加すると、(もう存在しないのであれば)自動的にミスPIAが生成されます。だから、それは可能な方法です。また、以下のスクリーンショットのように、独自のアセンブリにinterop型を埋め込んでみるのもよいでしょう。
関連
-
[解決済み】「ワークシートクラスの貼り付けメソッドに失敗しました」が時々発生するのはなぜですか?
-
[解決済み] Doエラーにならないループ
-
[解決済み] セル内に改行文字を追加する(CSV)
-
[解決済み] VBAでイミディエイトウィンドウを消すには?
-
[解決済み] Excel VBA マクロ。ユーザー定義型が定義されていない
-
[解決済み] MS Excel で部分文字列を使用して文字列のセルインデックスを検索する
-
[解決済み] EXCELの複数範囲-範囲ごとに異なる回答が必要
-
[解決済み] 特定の時間だけ一時停止するには?(エクセル/VBA)
-
[解決済み] Excel VBA Projectのパスワードを解読する方法はありますか?
-
[解決済み】Excelで列全体に数式を適用するショートカット【終了しました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ブレークモードでマクロを実行できない
-
[解決済み] 閉じたワークブックから値を取得するExecuteExcel4Macro
-
[解決済み] VBA関数 - 引数は任意ではない
-
[解決済み] ExcelでDateTimeを表現する方法
-
[解決済み] どのようにvbaコードで "名前を付けて保存 "を行うには、datestampと私の現在のExcelワークブックを保存するには?
-
[解決済み] モジュール内でUserForm_Initialize()を呼び出す
-
[解決済み] EXCELの複数範囲-範囲ごとに異なる回答が必要
-
[解決済み] VBAでRangeクラスのSelectメソッドに失敗する
-
[解決済み] エクセルファイルの正しいcontent-typeは何ですか?重複
-
[解決済み] vbaで文字列の中に二重引用符を入れるにはどうしたらいいですか?