アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB6.0で作成したソフトの一部でエクセルを操作する箇所があります。

『新しいブックを作成して名前を付けて保存する』ところでエラーが出てしまいます。
Excel2007,2003では正常に動作するのですが、2000ではエラーが発生し強制終了されてしまいます。

'////////////////////////////////////////////////////////////
Private Sub EditExcelFile(FileName As String)

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add

xlApp.Visible = True

With xlBook
.Application.DisplayAlerts = False
.SaveAs (FileName)
.Application.DisplayAlerts = True
End With

Set xlBook = Nothing
Set xlApp = Nothing

End Function
'////////////////////////////////////////////////////////////

上記コードの .SaveAs (FileName)の箇所でエラーがでます。
.SaveAs (FileName)をコメント文にすると2000でも正常に動作します。
FileNameは新しいブック名のパスが入ります。

2000でも正常に動作させるにはどのような処理を加えれば良いでしょうか?
宜しくお願い致します。

A 回答 (4件)

No3さんの回答にあるようにObjectLibraryの違いだと思われます。


参照設定
xl2000 : Microsoft Office 9.0 Object Library
xl2003 : Microsoft Office 11.0 Object Library

普通こういった場合はバージョンの違いを回避するために実行バインティングを使用してほうがいいのかも知れません。

>Dim xlApp As Excel.Application
>Dim xlBook As Excel.Workbook

 Dim xlApp As Object
 Dim xlBook As Object

でどうでしょうか。
 
もちろん、xl2000の方は最新のアップデートがなされているのは言うまでもありませんが。
 
    • good
    • 0

現在、参照設定しているエクセルオブジェクトはどのバージョンでしょうか?


どうも下位互換はうまくないらしく、当方では常時2000のバージョンを参照させています。(EXCEL9.OLB)これで2003、2007に対応しています。
試しにやってみてはいかがでしょう?

ちなみに、ご存知かどうか分かりませんが「OLB」ファイルはセットアップに含めたりして配布するとライセンス規約に反しますので気をつけてください。
    • good
    • 0

>2000以前のExcelが入ったPCでexeファイルを作成する必要があるということでしょうか?



他にも方法があるかもしれませんが、それが一番良いと思います。
    • good
    • 0

お使いのEXCELオブジェクトの互換の問題ではないでしょうか?



2000でも使う場合は、作成時のEXCELオブジェクトは2000以前の物である必要があると思います。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

2000以前のExcelが入ったPCでexeファイルを作成する必要があるということでしょうか?
(現在、Excel2003が入ったPCにてVBプロジェクトの作成をしております。)



【質問文の補足】
質問文中のExcel2007,2003,2000はそれぞれ別のPCに入っています。

お礼日時:2007/12/14 12:08

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