質問

初心者です。 VB6.0からvb2010への乗り換えをしていますが、以下のコードでxlBooks = xlApplication.Workbooksのところで止まってしまいます。 参考ページをいろいろ見ましたが原因が分かりません。 実行する前のコードに波線はでません。 CreateObjectでやっても結果は同じでworkbookを作るところでエラーとなります。 エラーは「タイプライブラリのロードに失敗」ですが、であればDim xlApplication As New Excel.Application()かCreateObjectで止まるように思いますが、理由がわかりません。 WinXP, Office2003, .Net 4.0. vb2010Expressの組み合わせで全てアップデート済み、参照設定はExcel 11.0 Object Libraryです。 どなたかご教示頂ければ幸甚です。


Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim xlApplication As New Excel.Application()
Dim xlBooks As Excel.Workbooks

xlBooks = xlApplication.Workbooks
xlBooks.Open("C:\Hoge.xls")

-
-
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication)
End Sub
End Class

通報する

回答 (1件)

WEBから引用したが、下記「事前準備」が旨く行われていないのでは?
私の場合は下記でうまく行った(エクセルブックが開けた)ことを報告します。
'【事前準備(参照設定の追加)】
'1.メニューバーから[プロジェクト]-[参照の追加]を選択する。
'2.[.COM]タブを選択し、以下のライブラリを選択する。
' 「Microsoft Excel x.x Object Library」
' ※ x.xの部分は、バージョンを表す。
'   インストールしているExcelのバージョンによって異なる。
'3.[OK]ボタンを押す。
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim xlApp As New Excel.Application
Dim xlBooks As Excel.Workbooks
xlBooks = xlApp.Workbooks
xlBooks.Open("C:\Documents and Settings\XXXX\My Documents\01化c.xls")
xlApp.Visible = True
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
End Sub
ーーー
VB2010Expressでやってみた。私の場合は
Button6ですが質問者の場合に合わせて
("C:\Documents and Settings\XXXX\My Documents\01化c.xls")も質問者の場合に合わせて。
エクセル2003以前でのファイルでテスト。

この回答へのお礼

ありがとうございます。 ご指摘の通り
1.メニューバーから[プロジェクト]-[参照の追加]を選択する。
'2.[.COM]タブを選択し、以下のライブラリを選択する。
' 「Microsoft Excel 11.0 Object Library」
'3.[OK]ボタンを押す。
で、参照設定して、ソリューションエクスプローラで確認、アセンブリの登録(C;\WINDOWS\assembly\)も確認し、さらに念のためhttp://msdn.microsoft.com/ja-jp/library/aa159923 …
の解説の通り、regasm.exeで再度登録もしてみましたが結果は同じでした。
気になるのはソリューションエクスプローラで登録されたExcelのプロパティーを見るとEmbed TypeとIsolatedの項目以外は太字で見えない(disable)のようになっていることです。 もともとvb2010Expressをダウンロードした際、Office2003を立ち上げるとWin Installerが立ち上がるようになり修復した経緯もあるため、最悪Officeとvb2010Expressを再インストールする必要があるかと考えています。 他に気になるのは.NETは1.1はインストールしておらず、2.0以降のみです。もし心当たりがあればまたお願いします。

この回答への補足

原因の一部らしきものがわかりました。 別のマシン(XP, Office2003)でためしたところ動きました。 今のマシンはVistaからのダウングレード英語版で秋葉原の外人向けの店で買ったVAIOなのでひょっとしてもともとOffice2007が入ったマシンだったのかもしれません。 この場合11.0 Object Libを参照設定しても12.0にリダイレクトされてしまうようです。 レジストリはいじりたくないのですが、方法を教えてくれる方を探します。 ありがとうございました。

このQ&Aは役に立ちましたか?1 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

注目の記事

おしトピにAndroid版アプリが登場

話題のトピックにさくっとコメントできる「おしトピ」に Android版アプリが登場! もっと身近に使いやすくなりました。

このQ&Aを見た人が検索しているワード


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ

べんりQ&A特集