ところが今日、職場で2002で保存したファイルを2007で開こうとすると【ファイル拡張子が示す形式と異なります】のエラー。逆に2007で保存したファイルを2002で開こうとすると【このファイルの形式を認識できません。】のメッセージエラー。職場で複数の同僚との活用を考えており、同僚が使うエクセルはそれぞれバージョンが違います。
なお、ネットでググるとファイルフォーマットを指定する必要があると書いてあり、workbook.SaveAs("abc.xls", Excel.XlFileFormat.xlWorkbookNormal)となっています。そこで★マークの部分を書き足しました。これで動くでしょうか?つまり、どのバージョンで保存しても、別のバージョンで開けるようになるのかどうか。
(すみません、ググったのは家に帰ってきてからです。明日、職場で確かめてこようと思いますが今からは行けません。月曜日に使いたいのです。パージョンの違いがあっても使えるかどうかの評価がほしいのです。)
xlWorkbookNormal は使用しているバージョンのフォーマットで保存されますので、
2007 でこれで保存した場合は、下位バージョンで開くことができません。
下位バージョンのフォーマットで保存するのが基本です。
ですから、保存時のフォーマットは xlExcel9795 を指定した方が良いでしょう。
http://www.officepro.jp/excelvba/book_new/index9.html
ただ、2007 以降とそれ以前では機能に大きく差がありますので、変更内容によって完全な再現は
できませんのでそのあたりは把握しておいた方が良いかと思います。
http://www.geocities.jp/oyakamassan_m/exceltips/excel2007_1.html
捕捉等はコメントで行いたいので、下の「この質問・回答へのコメント」を有効にお願いいたします。
ちょっと検証してみました。
2003 では xlExcel9795 の使用でだいたい問題なかったのですが、2010 では この書式は
使えませんでした。おそらく 2007 でも使えないかもしれません。
代わりに、2010で xlExcel8 と xlWorkbookNormal で保存し 2000 で開いてみましたが、
どちらも開くことができました。
ですので先の回答は誤っており(すみませんでした)、試そうとされていた xlWorkbookNormal
で保存することで、できそうです。
前回のコードでしたら
dstWB.SaveAs folderPath & "\" & fileName, FileFormat:=xlWorkbookNormal
で行けるかと思います。
返信が遅れて大変申し訳ありません。ずっとこの問題を職場で引きづりながら、いろいろ試してみましたが、これで何とか行くような気がしてきました。明日も職場に行ってやってみます。また、返信します。
(^o^)
ありがとうございます。わかりやすいページを紹介してくれて感謝です。ただ、保存したいページはxlExcel9795では2002でさえ、うまくいかないように感じています。職場では同僚が2007を使って、サーバーに集まった複数のファイルを私が2002で処理したいのです。何とかならないかと思っています。なお、私は以前「http://q.hatena.ne.jp/1206170553」でMookさんに答えてもらっていて、このコードの下から3つめの部分をいじっているところです。重ね重ねお世話になっているわけです。m(_ _)m