
ご教授をよろしくお願いいたします。
現在、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でそのファイルを開いている状態でシステムを起動したり、ファイルにロックが掛かっている状態で無い事も確認しました。
読み取り専用の属性もファイルにはありません。
同じような現象を経験した方がいらっしゃれば是非とも情報をよろしくお願いいたします。
No.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 とか。
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についてのアドバイスもありがとうございました。
的確なアドバイスに非常に感謝しております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
Wordファイルの結合
-
SGファイルって何ですか?
-
営業秘密の漏洩について
-
ASP .NETでファイル選択ダイア...
-
fprintfで文字化け
-
CSVファイルへの保存の際、デー...
-
[VBScript]ファイルの入出力を...
-
分割コンパイルの#defineについて
-
BI書、FD書 とは
-
【C#】リソースファイルの埋め...
-
Thunderbirdでemlファイルを開...
-
Excelマクロでの再読込み方法
-
dataファイルをxtxファイルにす...
-
エクスプローラから開かれるWor...
-
大きいサイズのテキストファイ...
-
RPGでファイル名(もしくはレコ...
-
ダイアログボックスで複数フォ...
-
2つのCSVファイルの比較
-
ファイル名の先頭にアンダース...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
営業秘密の漏洩について
-
vba ActiveSheet.pasteを使った...
-
ファイル名の先頭にアンダース...
-
csvファイルを開かずに文字を検...
-
SGファイルって何ですか?
-
テキストファイルの最終行を削...
-
CSVファイルへの保存の際、デー...
-
バッチで118項目のCSVを処理し...
-
Thunderbirdでemlファイルを開...
-
ファイルの結合
-
ダイアログボックスで複数フォ...
-
SAVファイル等について
-
最近使ったファイルからファイ...
-
VBAにてEXCEL以外のファイル(テ...
-
グローバル変数のよくない使い...
-
Cでのネットワークファイルの読...
-
「VBScript」ADODB.Streamにお...
-
RPGでファイル名(もしくはレコ...
-
BI書、FD書 とは
おすすめ情報