プロが教える店舗&オフィスのセキュリティ対策術

Office 2003までは、こちら(http://office2007oldstyle.web.fc2.com/ofcicn/)のソフトを使用し、確認していました。

それ以上のバージョンに関して正確なバージョンを調べたいのですが、良い方法はありますでしょうか?

A 回答 (6件)

続き:



私の知っている話を書いておきます。(手の内を明かすというほうが良いかも)
かなり専門的な話です。私自身は、多少Excelのファイルのダンプで勉強した程度です。

>かなりググって調べましたが、日本語サイトでは見つかりませんでした。
今は、少なくなりました。

OpenOffic.orgでは、過去の詳しいデータを持っていて、公開されているという話を聞きました。Javaでは、Excelファイルを直接書き込んだりしているということです。

http://www.openoffice.org/sc/excelfileformat.pdf

私の場合は、今回、直接、バイナリエディターを使いましたが、VBAでも、バイナリ検索は可能です。「Biffファイル」というファイルの構造は公開されています。解説本は、『Excel デベロッパーズ キット』という本で、昔、Microsoftから出ていましたが、高くてとても購入できる金額ではなかったのです。(;_;) しかし、英語版は手に入るらしいですが、今さらですね。

以下は、良くまとまっています。
http://mitsutakauomi.com/?p=193

MSDN(英語)
http://msdn.microsoft.com/en-us/library/cc313118 …

Jakarta POIで、Excelドキュメントを操作する
http://www.visards.co.jp/java/poi/poi5.html

>Wordでは曖昧なままということですか。
いいえ、私が不勉強なのです。自分のハードディスクの中を探して見ましたら、以下のpdf ファイルがありました。

この言葉で、ぐぐってみてください。Microsoft にあります。
「Microsoft Office Word 97-2007 Binary File Format (.doc) Specification.」

専門すぎて、あまりお役に立てないかもしれません。
    • good
    • 0
この回答へのお礼

おぉ!素晴らしい!w
週末だけ趣味でコード書く程度の私には何がなにやらwww
じっくり読み解いてみます!
ありがとうございます!!

お礼日時:2012/11/28 17:15

#3/4 の回答者です。



今、他のファイルも調べてみましたが、Excelのほうは同じように見受けられました。
もともと、Excelのファイルフォーマットは、公開されていましたから、少し検索すれば、もっと詳しい情報は得られるはずです。(もう公開されていませんが、xlDampというツールは、Excelのバイナリー専用のダンプツールです。普通のバイナリエディターで十分ですが。)

#4のマーキングの見つけた場所は、一定していません。半分よりも後ろ側です。おそらく、最初のご質問の参照先のツールの作者レベルなら、このぐらいは問題ないはずです。私ごときでも、VBAでどうやったら良いかぐらいは分かりますから。ただ、今、ちょっと余裕の時間がないのです。

ところで、Word に関してですが、これは確実だと言える段階ではありませんね。
ただ、やはりバイナリでは違いがあります。

上位バージョンで作成した場合は、
Microsoft Word 97-2003/Word.Document.8

という文言が含まれています。つまり、上位バージョンで作成する時は、このような選択をするということと、下位バージョンではしないというだけで、それは明確なマーキングとは言えません。ただ、そういう違いが見受けられたというレベルです。しかし、これも誰かが研究し尽くしているはずです。
    • good
    • 0
この回答へのお礼

はい、Excelのファイルフォーマット読んだのですが、まったく理解できませんでした・・・。
Officeのファイルフォーマット自体が拡張に拡張を重ねてカオスになっているとかなんとか・・・。

なるほど、Wordでは曖昧なままということですか。

>誰かが研究し尽くしているはずです。
かなりググって調べましたが、日本語サイトでは見つかりませんでした。
英語で調べればもっとわかるかもですが、いかんせんうっすらとしか分からないもので。

ありがとうございました!

お礼日時:2012/11/27 19:02

#3の回答者です。



>2007以上で作成したxls形式について調べる方法がありません。
>(質問文ツールですと、2003で表示されます。)

2007以上で作られたものとの違いで、今の所、全部のシートに当たっていないのですが、大きな違いがありました。

今のところ、Excelだけですが、2003と、それ以上で作られたものでは、、
ダンプしてバイナリで覗いてみると、

2003側には、
一番、最後に
Microsoft Office Excel Biff8 と出てきます。
BIFF8 形式とは、Excel97~2003フォーマットのことです。

それ以上のもので(Excel 2010)作られたものには、
DocumentSummaryInformation8 と出てきました、

もう少し、十分に検証すべきものがあるとは思いますが、だいたい、こういう所に落ち着くような気がします。

http://office.microsoft.com/ja-jp/excel-help/HP0 …
    • good
    • 0
この回答へのお礼

深く突っ込んで調べていただいてありがとうございます!
おーこれは凄いですね!
これが確定的に明らかであれば、問題は解決ですね!

お礼日時:2012/11/27 18:58

#1さんの引用先のコードは、私もC++でコンパイルして作りましたが、それは下位バージョンで、バイナリコードの中を調べるプログラムです。

おそらく、質問に出ていたそのツールも原理的には同じだと思います。バイナリの場合は、それが出てきます。

今後、Microsoft はどういう対応をするか分かりませんが、2007以上は、もともと、テキストファイルで、「Open XML」で書かれていますから、中身を調べれば分かるはずです。

xlsx などのファイルの拡張子を、zipに換えて、
docProps フォルダののapp.xml ファイルをオープンして、

<AppVersion>○○.○○○○0</AppVersion>

という所を探せば、2007 なら、12.0
2010 なら、14.0
と出てくるはずです。

比較的構造は簡単なので、簡単なマクロで可能だと思いますが、好きな人は作るのではないかと思います。(たぶん、unzip.dllの呼び出しが必要かな?)

この回答への補足

これで大方解決なのですが、
xlsx→XMLの中身を見る
(2007以前の)xls→質問文ツール
なのですが、
2007以上で作成したxls形式について調べる方法がありません。
(質問文ツールですと、2003で表示されます。)
#1の方法で、判別できるのでしょうか?
また、何か妙案はございますでしょうか?

補足日時:2012/11/26 08:47
    • good
    • 0
この回答へのお礼

おー確かにXMLになってましたね!忘れていましたw

お礼日時:2012/11/26 08:46

ファイルのプロパティ:


私の環境は、XPでEXCEL、WORDどちらも2000ですが、
EXCELは、日付(古いのは96とか)に関係なく?、「Microsoft Excel」としか表示されないようです。
WORDは、日付によって、WORD6.0、WORD8.0、WORD9.0、と違いがあり、ちゃんとバージョンが入っているようです。
こういうのもあるようです。これなら大体分かりますね。
Microsoft Office Excel ワークシート
Microsoft Office Excel 97-2003 ワークシート (.xls)
Microsoft Office Excel ワークシート (.xlsx)
    • good
    • 0
この回答へのお礼

ファイルのプロパティに関しては、あまり信用できないと思います。
ありがとうございますw

お礼日時:2012/11/26 08:43
    • good
    • 0
この回答へのお礼

ありがとうございます!
おーこういうのがあるのですね。
参考にします!

お礼日時:2012/11/26 08:41

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