C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 57 を表示中)
■32751 / )  Re[1]: Excel 保存
□投稿者/ 魔界の仮面弁士 (996回)-(2009/02/13(Fri) 17:05:53)
2009/02/13(Fri) 17:15:44 編集(投稿者)

No32746 (くろ さん) に返信
> で保存しておりますが、Vistaでリリースすると「HRESULTからの例外」が発生してしまいます。
> (XlFileFormat.xlExcel8は使用不可)

開発機が WinXP + VS2008 + Excel 2003 PIA で、
実行環境が Vista + .NET 3.5 + Excel 2007 なのでしょうか。


> xlsBook.SaveAs(FilePath, Excel.XlFileFormat.xlExcel9795)

Workbook.SaveAs は、2000 → 2002 の際に "Local" という Optional 引数が追加されたのみで、
それ以降のバージョンでは、インターフェイス自体は仕様変更されていません。

ただし、使用できるフォーマットには差異がありますので、Excel.Application の
Version プロパティを見て、保存方法を切り替えて使用せねばならないかも。

当方の 2007 環境では、手動保存の場合も、Excel 2007 には 95 互換形式の選択肢が
見当たらず、VBA からの保存においても xlExcel9795 による SaveAs はエラーとなりました。

同様に DefaultSaveFormat の動作も確認してみましたが、xlExcel9795 は使えませんでした。

Application.DefaultSaveFormat = XlFileFormat.xlExcel5 'OK
Application.DefaultSaveFormat = XlFileFormat.xlExcel7 'OK
Application.DefaultSaveFormat = XlFileFormat.xlExcel8 'OK
Application.DefaultSaveFormat = XlFileFormat.xlExcel9795 'NG★
Application.DefaultSaveFormat = XlFileFormat.xlWorkbookDefault 'OK
Application.DefaultSaveFormat = XlFileFormat.xlWorkbookNormal 'OK



> 参照設定を変えずにこのままリリースする良い方法はありますでしょうか?
それは、「参照設定を変えれば解決する」事を確認済みであるという事でしょうか?

問題の原因が参照設定の差異にあるのだとしたら、対処療法的には、
問題の発生する箇所だけ、レイトバインドで運用するという方法が使えるでしょう。

しかし、参照設定を変えても解決しないのだとしたら、その対処法は意味を成さないので、
修正するだけ無駄になってしまいます。是非とも、事前にテスト環境を用意して確認してください。


> また、リリース環境を判断し、動的に参照を変化させる方法がありましたら、
実行時判定となると、レイトバインドにせざるを得ないと思います。
Office 2007 環境でコンパイルした物と、2003 との物をそれぞれ用意し、
インストール時点で選択インストールさせた方が安全かと。

# さもなくば、Excel 処理だけは VBA や VBS で作っておき、.NET からはそれを呼び出すとか。
返信 編集キー/


管理者用

- Child Tree -