- 締切済み
vb2010で既存のエクセルを開くには?
初心者です。 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)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
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.aspx#officeprimaryinteropassembliesfaq_after の解説の通り、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にリダイレクトされてしまうようです。 レジストリはいじりたくないのですが、方法を教えてくれる方を探します。 ありがとうございました。