重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

ご教授をよろしくお願いいたします。
現在、VS2005のBasicを使用してExcel操作のシステムを作っています。
行う事は、指定のExcelファイルをオープンし、指定のシートのセルにあるデータを格納してそのまま上書き保存をするだけです。

参照設定の追加
Microsoft Excel 11.0 Object Library

以下がそのソースの抜粋です。
Dim objExcel As Microsoft.Office.Interop.Excel.Application
Dim objExcelBook As Microsoft.Office.Interop.Excel.Workbook
Dim objExcelSheet As Microsoft.Office.Interop.Excel.Worksheet

objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
objExcelBook = objExcel.Workbooks.Open(FileName)
objExcelSheet = objExcelBook.Worksheets(SheetName)
objExcelSheet.Cells(row, col).Value = intData

objExcel.DisplayAlerts = False
objExcelBook.SaveAs(FileName)

開発環境はXP Pro SP2/VS2005/Visual Basic/Excel2003です。
開発環境で試験をした時はちゃんとファイルが保存されて正常に処理が完了するのですが、セットアッププログラム(VS付属のインストーラー)で別のパソコンにインストールしたプログラムは、以下のエラーが発生します。
「保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れている事が考えられます」
違う環境のパソコンの複数台に試したのですが、同じ現象でした。
(Windows2000/XP/Excel2000/Excel2003)

もちろん、Excelでそのファイルを開いている状態でシステムを起動したり、ファイルにロックが掛かっている状態で無い事も確認しました。
読み取り専用の属性もファイルにはありません。

同じような現象を経験した方がいらっしゃれば是非とも情報をよろしくお願いいたします。

A 回答 (1件)

こんばんは。



> 違う環境のパソコンの複数台に試したのですが、同じ現象でした。

Microsoft Excel 11.0 Object Library が参照不可なら

> Dim objExcel As Microsoft.Office.Interop.Excel.Application
> Dim objExcelBook As Microsoft.Office.Interop.Excel.Workbook
> Dim objExcelSheet As Microsoft.Office.Interop.Excel.Worksheet

このコードはエラーになりそうな気がしますけど…参照パスが違うのでは?

> objExcel = CreateObject("Excel.Application")

このコードなら参照設定は解除して、変数を Object 型に変えてみたら?
確認してませんが。

余談ですが・・・

> objExcelSheet.Cells(row, col).Value = intData

row も col も Excel VBA の予約語なので今のうちに変更しておいた方が
良いですよ。

lRow とか。
    • good
    • 0
この回答へのお礼

KenKen_SP様、的確な回答をありがとうございます。

>このコードなら参照設定は解除して、変数を Object 型に
>変えてみたら?確認してませんが。

まさにその通りです。
Dim objExcel As Microsoft.Office.Interop.Excel.Application
Dim objExcelBook As Microsoft.Office.Interop.Excel.Workbook
Dim objExcelSheet As Microsoft.Office.Interop.Excel.Worksheet

Dim objExcel As System.Object
Dim objExcelBook As System.Object
Dim objExcelSheet As System.Object
に変更したらエラーがなくなりました。

本当にありがとうございました。
また、row/colについてのアドバイスもありがとうございました。

的確なアドバイスに非常に感謝しております。

お礼日時:2006/11/05 07:45

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