VB2005を使用してEXCELに出力する際のエラーについて

このQ&Aのポイント
  • VB2005を使用してEXCELに出力しようとしている際に、エラーが発生します。エラー内容は「型 'Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス型 'Microsoft.Office.Interop.Excel._Application' にキャストできません」となっており、解決方法が分かりません。
  • 以前は正常に動いていたが、2007をインストールして2003に戻した後からエラーが発生するようになりました。
  • 時間がなくて困っています。どなたか解決方法を教えていただけませんか?
回答を見る
  • ベストアンサー

VB2005を使用しています。

VB2005を使用しています。 EXCELに出力しようとしているのですが・・・ Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks 「型 'Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス型 'Microsoft.Office.Interop.Excel._Application' にキャストできません。IID '{000208D5-0000-0000-C000-000000000046}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: が見つかりませんでした。 (HRESULT からの例外: 0x80030002 (STG_E_FILENOTFOUND))。」 このようなエラーが出てしまいます。 以前は、正常に動いていたのですが・・・ 2007をインストールして、2003に戻してからかもしれません。 http://social.msdn.microsoft.com/Forums/en-US/vbinterop/thread/6b793878-d94a-4a62-8817-dea1cab79377/ がそうかと思ったのですが、意味がわからず何も出来ていません。 時間がなくて困っています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • papope
  • ベストアンサー率33% (8/24)
回答No.1

参照設定が崩れただけではないですか? 参照設定を、やり直せば治るような気もします。 (とくに2003はEXCELなどの参照設定の仕方が違ったように思います) また、回答ではありませんが、VBのバージョンを上げ下げしているようですが バージョンを上げ下げして旧のバージョンを消すよりも、複数のバージョンを 生かしておいたほうが便利だと思いますが。(私もVSですが2003、2008の両方を インストールして必要に応じて使い分けています) 御参考まで

tohoho777
質問者

お礼

参照設定は何度もやり直してみたのですが、現象は変わりませんでした。 EXCEL2007を再度入れなおしたところ、正常に戻りましたので、やはり、アンインストールしたのが原因だったようです。

関連するQ&A

  • VBでエクセルのバージョンを指定して開く

    PCにEXCEL2002と2013がインストールされています。 VBでエクセルを起動し、マクロを実行したいのですが、その際に起動するエクセルのバージョンを指定したいと考えています。 以下でやると標準設定のEXCELが開いてしまい、バージョンの指定ができません。 Dim xlApp As New Excel.Application() Dim xlBooks As Excel.Workbooks xlBooks = xlApp.Workbooks xlBooks.Open("C:\test.xls") xlApp.Visible = True xlApp.Run("test.xls!macro") なにか方法はありますでしょうか?

  • Excelのシートをコピー

    環境は,Visual Studio 2005 Standard Editionです. プログラムを実行後,以下の例外が発生しました. 「HRESULT からの例外: 0x800A03EC」 発生場所は★の位置です. ここから------- Dim xlApp As Microsoft.Office.Interop.Excel.Application = Nothing Dim xlBook As Microsoft.Office.Interop.Excel.Workbook = Nothing Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet = Nothing xlBook = xlApp.Workbooks.Open("ファイルのパスが入ります") xlSheet = xlBook.Worksheets("シート名が入ります") Dim xlBook2 As Microsoft.Office.Interop.Excel.Workbook = Nothing Dim xlSheet2 As Microsoft.Office.Interop.Excel.Worksheet = Nothing xlBook2 = xlApp.Workbooks.Open("ファイルパスが入ります") xlSheet2 = xlBook.Worksheets("シート名が入ります") 'Excelを表示しない xlApp.Visible = False xlSheet.Copy(Before:=xlSheet2) ★ ここまで-------------- やろうとしているのは,xlSheet2のシートを含むExcelファイルに,xlSheet2の前にxlSheetをコピーする処理です. ★のところで上の例外が発生してしまいます. 以上,よろしくお願いします.

  • VB2005でExcelのシートをコピー

    VB2005Expressで開発をしています。 Excelのシートをコピーして同じbookに追加をしたいと思っています。 下記でまずExcelを使用できるようにして  Dim xlApp As New Excel.Application  Dim xlBooks As Excel.Workbooks = xlApp.Workbooks  Dim xlBook As Excel.Workbook = xlBooks.Add '新規のファイルを開く  Dim xlSheets As Excel.Sheets = xlBook.Worksheets  Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)  xlApp.Visible = True 下記で追加できると思うのですが、()内にセットするパラメータが わかりません・・・  xlBook.Worksheets.Copy() どなたかご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • 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

  • CreateObjectでエラー発生(Excel2007が悪い?)

    下記の環境、プログラムで"ActiveXコンポーネントを作成できません。"のエラーが出て困っています。 毎回ではなく、「1回目はエラーで、2回目以降は出ない」「たまに出る」など、動作が一定ではありません。 Excel2003では問題なく動作するので、Excelのバージョンを変更しようかとも考えています。(高価で入手しにくいので踏み切れずにいます。) Excel2007とVBの問題なのでしょうか? プログラムの変更で解決すればいいのですが…。 ご教示ください! ****** 環境 ****** OS:WindowsXP Professional Ver.2002 SP2 (Microsoft .NET Framework 2.0 Configuration) Excel:Microsoft Office Excel 2007 言語:VB2005 SP1 参照先:Microsoft Excel 12.0 Object Library ****** プログラム ****** Dim xlApp As Microsoft.Office.Interop.Excel.Application Dim xlBook As Microsoft.Office.Interop.Excel.Workbook Dim xlSheet1 As Microsoft.Office.Interop.Excel.Worksheet Try xlApp = CType(CreateObject("Excel.Application"),Microsoft.Office.Interop.Excel.Application) xlBook = CType(xlApp.Workbooks.Open("C:\File\OutPutSheet_1System.xls"),Microsoft.Office.Interop.Excel.Workbook) xlSheet1 = CType(xlBook.Worksheets(1),Microsoft.Office.Interop.Excel.Worksheet) ↓↓以下省略 (開放は行っています。)

  • vb.netでEXCEl出力

    VB.NETを始めて2週間ほどの初心者ですがお願いします。 現在DataGridViewに表示した内容を、ボタン押下によEXCELに表示するという段階で悩んでおります。 現状としては、ボタン押下によりEXCELを開くところまで終了していますが、どうすればDataTableの情報をEXCELに表示できるのかが 色んな質問を見させていただいたのですが分かりません。 お忙しいとは思いますがよろしくお願いします。 現在のEXCELを表示しているソースです Dim oExcel As New Excel.ApplicationClass Dim xlBooks As Excel.Workbooks ' xlApplication から WorkBooks を取得する xlBooks = oExcel.Workbooks ' 新しい Excel ブックを追加する xlBooks.Add() 'Excelを表示する oExcel.Application.Visible = True 環境としまして Microsoft Viosual Basic 2008 Express Edition VB.NET WinXP pro まだ質問する上で何の情報が必要なのかもわかりませんので、必要な情報がありましたら教えてください。

  • VB2008を使用していますが教えて下さい。

    VB2008を使用していますが教えて下さい。 VBからExcelブックを開く時に「マクロを有効にする」を選択する画面を表示させずに直接ユーザフォームを表示させて、ExcelVBAを利用したいのですが、どうしても上手く出来ません。いろいろネットで調べて試行しているのですが、どれもエラーになってしまいます。 現在下記の(1)(2)をExcelVBAの内容により使い分けをしています。助言方よろしくお願いします。 (1) この記述では「マクロを有効にする」は表示されず直接ユーザフォームが表示されます。ただ、VBA上で新たなExcel形式のファイルを出力させても画面上に表示されません。 ※Visible=True の記述で解消しそうですが分かりません。 Dim xlApp As Object = CreateObject("Excel.Application") Dim xlBooks As Object = xlApp.workbooks Dim xlBook As Object = xlBooks.Open(FileName:="c:test.xls") xlApp = Nothing xlBooks = Nothing xlBook = Nothing (2) この記述では「マクロを有効にする」を選択する画面が表示されてしまいます。ただ、ExcelVBA上で新たなExcel形式のファイルを出力できます。 Dim proc As New Process() proc.StartInfo.FileName = "c:test.xls" proc.Start() proc = Nothing

  • VB2005でのEXCEL制御について

    いつもお世話になってます。 私はVB入門者です。 VBからシートを選択して値を入れることは出来たのですが 範囲選択→格子罫線をひく、といったような操作について 調べたところ、マクロをつくりコピーアンドペーストでスムーズに いくということがわかったので、試したところうまくいきませんでした。 又、質問ナンバー QNo.3575919 に [Visual Basic2005でExcelに罫線を描く]とあり 「CreateObject("Excel.Application")」はソースに入っているか という部分がポイントのようなので、少しいじってはみたのですが うまくかけませんでした。 と、いうよりも理解できませんでした。 下記のコードでは選択範囲を指定する部分まで成功したものです。 アドバイスよろしくお願いします。 Sub excel_app() Dim xlApp As Excel.Application = Nothing Dim xlBooks As Excel.Workbooks = Nothing Dim xlBook As Excel.Workbook = Nothing Dim xlSheets As Excel.Sheets = Nothing Dim xlSheet As Excel.Worksheet = Nothing xlApp = New Excel.Application() xlBooks = xlApp.Workbooks xlBook = xlBooks.Open("C:\hoge.xls") xlSheets = xlBook.Worksheets xlBook.Worksheets(1).Range("A31:Y55").Select() xlBook.Worksheets(1).Range.Borders. ←これ以降がわかりません。

  • VB.net(2005)でエクセルの特定名称のシートを操作したい。

      お世話になります。 WindowsXP + SP3、VB.net(2005)の環境にて開発をしております。 VB.netから既存のエクセルファイル(雛形)を開き、特定の名称のシートを アクティブにしたいのですがどのようにコーディングすれば良いでしょうか? ※色々とネットで情報検索してみましたが特定の名前のシートを操作する  方法をうまく見つけられず質問致しました。 エクセルファイル名:売上情報_2009年.xls シート名     :"200901" ~ "200912" の12シート 以前、VB6で同様のことを行ったときは以下のような記述で実現できました。 Dim xlApp As Object Dim xlsheet As Object xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Open(FileName:="C:\売上情報_2009年.xls") xlsheet = xlApp.Sheets("200908") xlsheet.Activate() 現状、vb.netで以下のコーディングまではできております。 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Open("C:\売上情報_200904.xls") Dim xlSheets As Excel.Sheets = xlBook.Worksheets よろしくお願い致します。  

  • VBでエクセルのデータを取り込む方法

    VB2010にエクセル(2003)のデータを取り込みたいのですが、うまくいきません。 どうすればよいのでしょうか。 外部アプリなので、Public Class Form1の前にImports Excel = Microsoft.Office.Interop.Excel と記入、dim xlapp as excel.apllcation dim xlbook as exce.book dim xlsheets as excel.sheets と記入してみますがこの時点でコードエラーとなります。(ネットで調べこのように記述しました) どうすればいいでしょうか。 すみません。vb初心者なので詳しく教えていただくとたすかります。 よろしくお願いします。

専門家に質問してみよう