none
VB.NETでExcelを操作するシステムを作って別PCにインストールしたらError:80040154が発生しました。 RRS feed

  • 質問

  • タイトルの通りエラーが発生しました。
    対象のPCにはExcelが入って居ませんが、Microsoft.Office.Interop.Excelをインストーラーに入れると動くという説明を見て
    インストーラーを作った時に自動的にインストールされる様になっているのですが、
    New Excel.Application部分でエラーが発生します。
    ソースは下記の様になっています。
    関係しているImportsは、
    Imports Microsoft.Office.Interop
    Imports System.Runtime.InteropServices.Marshal
    を使用しています。

    ========================================================

        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Dim app As Excel.Application
            Dim book As Excel.Workbook
            Dim shtExcel As Excel.Worksheet
            'Dim i As Integer
            'Dim objChartObject As Microsoft.Office.Interop.Excel.ChartObject
            'Dim objChart As Microsoft.Office.Interop.Excel.Chart

            MessageBox.Show("test1")

            app = New Excel.Application()
            'app = CreateObject("Excel.Application")

            MessageBox.Show("test2")

            app.Application.Visible = False
            MessageBox.Show("test3")
            app.DisplayAlerts = False

            MessageBox.Show("test4")
            book = app.Workbooks.Open("C:\Excel.xls")

            MessageBox.Show("test5")
            shtExcel = book.Worksheets(1)

            MessageBox.Show("test6")
            TextBox1.Text = shtExcel.Range("A1").Value

            shtExcel = Nothing

            book.Close()
            book = Nothing
            app.Quit()
            app = Nothing

        End Sub


    よろしくお願いします。

    2009年11月24日 3:04

回答

  • 対象のPCにはExcelが入って居ませんが、Microsoft.Office.Interop.Excelをインストーラーに入れると動くという説明を見て
    どこの説明でしょうか?
    Microsoft.Office.Interop.Excel は COM のラッパーなので、対象PC にEXCEL が入ってないと動きませんよ。
    2009年11月24日 3:31
    モデレータ
  • その場合は新規にExcel2003のインストールを行いたいと思っているのですが、新規ライセンス取得が出来ない状態なのですが、
    その場合はみなさんどの様にされていますでしょうか?
    Excel2003が手に入らないということでしょうか? 大量には無理でしょうが、通販などである程度は手に入ります。


    2008だと非常に重くレスポンスに問題が出てしまい動作してくれないという問題がありExcel2008を入れる以外の方法でありませんか?
    非常に重くレスポンスに問題が出るということですが、そのパソコンではExcel2007(Excel2008という製品はありません)単体で動かした時も重いということでしょうか? それであればパソコンの能力の問題になってしまいます。例えば、メモリを増やすなどで改善されるかもしれません。
    また、どのようなことがされたいのかわかりませんが、例えばcsvファイルを作成するだけにしておいて、後でExcel2007で開くようにしたり、Excel2007で予めテンプレートを作成しておき、そこに値だけを埋め込んだり、自動計算を一時的にオフにするなどで改善が見られるかもしれません。

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年11月24日 4:34
    モデレータ
  • やはりExcelのインストールは必要と言うことですね。
    その場合は新規にExcel2003のインストールを行いたいと思っているのですが、新規ライセンス取得が出来ない状態なのですが、
    その場合はみなさんどの様にされていますでしょうか?
    ボリュームライセンスで Office 2007 を購入した場合、旧バージョンにダウングレードする権利があるはずです。
    必要に応じて、購入前に ボリュームライセンス関連の窓口に相談してください。

    http://www.microsoft.com/japan/licensing/highlights/200611.mspx
    http://www.microsoft.com/japan/licensing/contact-us/default.mspx

    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2009年11月24日 14:14
    モデレータ
  • 配布先に EXCEL がインストールされてない、もしくは配布先の EXCEL のバージョンに依存せず
    比較的高速に 固定フォーマットのEXCEL ファイルを生成したいなら
    ExcelCreator を使うという手も有ります。

    ExcelCreator 2007

    2009年11月24日 23:07
    モデレータ
  • なるほど
    ダウングレードという物があるんですね。
    一般のパッケージや、OEM 版では行使できない権利ですので、あくまである程度以上の本数のライセンスを買うことが前提になります。
    詳しくはボリュームライセンスについてお調べください。


    あとは、既に提案されているように、サードパーティー製の Excel ファイルに書き出すコンポーネント・ライブラリを利用することも手でしょう。

    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2009年11月25日 14:20
    モデレータ

すべての返信

  • 対象のPCにはExcelが入って居ませんが、Microsoft.Office.Interop.Excelをインストーラーに入れると動くという説明を見て
    どこの説明でしょうか?
    Microsoft.Office.Interop.Excel は COM のラッパーなので、対象PC にEXCEL が入ってないと動きませんよ。
    2009年11月24日 3:31
    モデレータ
  • 対象のPCにはExcelが入って居ませんが、Microsoft.Office.Interop.Excelをインストーラーに入れると動くという説明を見て
    どこの説明でしょうか?
    Microsoft.Office.Interop.Excel は COM のラッパーなので、対象PC にEXCEL が入ってないと動きませんよ。

    返信ありがとうございます。
    説明部分はもしかしたら私の読み違いだったのかも知れません。

    やはりExcelのインストールは必要と言うことですね。
    その場合は新規にExcel2003のインストールを行いたいと思っているのですが、新規ライセンス取得が出来ない状態なのですが、
    その場合はみなさんどの様にされていますでしょうか?
    2008だと非常に重くレスポンスに問題が出てしまい動作してくれないという問題がありExcel2008を入れる以外の方法でありませんか?
    2009年11月24日 3:39
  • その場合は新規にExcel2003のインストールを行いたいと思っているのですが、新規ライセンス取得が出来ない状態なのですが、
    その場合はみなさんどの様にされていますでしょうか?
    Excel2003が手に入らないということでしょうか? 大量には無理でしょうが、通販などである程度は手に入ります。


    2008だと非常に重くレスポンスに問題が出てしまい動作してくれないという問題がありExcel2008を入れる以外の方法でありませんか?
    非常に重くレスポンスに問題が出るということですが、そのパソコンではExcel2007(Excel2008という製品はありません)単体で動かした時も重いということでしょうか? それであればパソコンの能力の問題になってしまいます。例えば、メモリを増やすなどで改善されるかもしれません。
    また、どのようなことがされたいのかわかりませんが、例えばcsvファイルを作成するだけにしておいて、後でExcel2007で開くようにしたり、Excel2007で予めテンプレートを作成しておき、そこに値だけを埋め込んだり、自動計算を一時的にオフにするなどで改善が見られるかもしれません。

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年11月24日 4:34
    モデレータ
  • やはりExcelのインストールは必要と言うことですね。
    その場合は新規にExcel2003のインストールを行いたいと思っているのですが、新規ライセンス取得が出来ない状態なのですが、
    その場合はみなさんどの様にされていますでしょうか?
    ボリュームライセンスで Office 2007 を購入した場合、旧バージョンにダウングレードする権利があるはずです。
    必要に応じて、購入前に ボリュームライセンス関連の窓口に相談してください。

    http://www.microsoft.com/japan/licensing/highlights/200611.mspx
    http://www.microsoft.com/japan/licensing/contact-us/default.mspx

    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2009年11月24日 14:14
    モデレータ
  • やはりExcelのインストールは必要と言うことですね。
    その場合は新規にExcel2003のインストールを行いたいと思っているのですが、新規ライセンス取得が出来ない状態なのですが、
    その場合はみなさんどの様にされていますでしょうか?
    ボリュームライセンスで Office 2007 を購入した場合、旧バージョンにダウングレードする権利があるはずです。
    必要に応じて、購入前に ボリュームライセンス関連の窓口に相談してください。

    http://www.microsoft.com/japan/licensing/highlights/200611.mspx
    http://www.microsoft.com/japan/licensing/contact-us/default.mspx

    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    >>trapemiyaさん
    Excel2007ですね。
    やろうとしている事は、固定フォーマットにデータをセットする処理を作成してます。
    Excel2007とExcel2003だと処理時間が倍くらいかかってしまうらしいです。

    >>Azuleanさん
    なるほど
    ダウングレードという物があるんですね。
    ありがとうございました。
    2009年11月24日 16:55
  • 配布先に EXCEL がインストールされてない、もしくは配布先の EXCEL のバージョンに依存せず
    比較的高速に 固定フォーマットのEXCEL ファイルを生成したいなら
    ExcelCreator を使うという手も有ります。

    ExcelCreator 2007

    2009年11月24日 23:07
    モデレータ
  • なるほど
    ダウングレードという物があるんですね。
    一般のパッケージや、OEM 版では行使できない権利ですので、あくまである程度以上の本数のライセンスを買うことが前提になります。
    詳しくはボリュームライセンスについてお調べください。


    あとは、既に提案されているように、サードパーティー製の Excel ファイルに書き出すコンポーネント・ライブラリを利用することも手でしょう。

    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2009年11月25日 14:20
    モデレータ
  • こんにちは。フォーラムオペレーターの高橋春樹です。

    ひらぽんさん、trapemiyaさん、Azuleanさん
    いつもお世話になっております。

    麻婆豆腐さん
    MSDNフォーラムのご利用ありがとうございます。
    皆さんからアドバイスを頂いたと思うのですが、問題解決に繋がりましたでしょうか?
    今回、皆さんからのアドバイスが、フォーラムを閲覧している方にとっても有用な情報だと思いましたので、
    勝手ながら、回答マークを付けさせて貰いました。

    今後ともMSDNフォーラムをよろしくお願いします(^_^)


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2009年12月7日 10:02