- ベストアンサー
Execlの名称とバージョンを自動入力したい
ExcelのフッターにExcelの名称とバージョンが入るように設定する方法を教えて下さい。 例「Excel2003 ver.11.0」 共通のドライブに保存されているExcelファイルを複数名が編集したりプリントしたりします。 その複数名は自分の所有するパソコンで編集・プリントするのですが、Excel2000の人もいれば、Excel2003の人もいます。 それぞれの使用者が編集後プリントする時に、フッター部分にExcelの名称とバージョンが入るようにしたいです。 フッター部分が無理ならば、セル上でも構いません。 関数を使ってできるような話を聞いたことがあります。 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
セル上に関数で表示するだけでよければ、こんな感じでしょうか。 ="Excel"&CHOOSE(INFO("release")-4,"5.0",,95,97,2000,2002,2003,2007)&" (Ver. "&INFO("release")&")" Excel2000,2002,2003,2007で動作確認。 ご参考まで。
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 関数では、2000以降なら、このようにすればよいです。 =LOOKUP(INFO("release"),{"9.0",2000;"10.0",2002;"11.0",2003;"12.0",2007}) ご質問とは直接関係がなくなりますが、 Application.Version は、Clng 関数や、CInt 関数は使えません。 97には、最初 8.0 その後、8.0 a ~ 8.0 n まで存在します。 ですから、 CInt(Application.Version) や Clng(Application.Version) ではなく、Val 関数を用います。 http://officetanaka.net/excel/vba/tips/tips77.htm で書かれている内容は、9 以上ですから問題はありませんが、97では、エラーが発生します。 しかし、内容的に、 >Sub Sample2() > If CInt(Application.Version) > 10 Then > MsgBox "OK" > Else > MsgBox "NG" > End If >End Sub こういう構文は、実際のコードでは使えません。この場合は、Directive (ディレクティブ)を用います。そのまま入れると、IFの分岐内でエラーが発生する可能性が極めて高くなります。97 とそれ以上のUserForm のモードや、Excel 2000 とExcel 2003 の間の AutoRecover のTrue, False などが挙げられます。これらの分岐は、当然ですが、上記の分岐ではエラーが発生します。
お礼
お礼が遅くなり申し訳ありません。 この度は、ご回答を頂きましてどうもありがとうございました。 大変参考になりました。 ご回答頂きましたこと、心から感謝いたします。 本当にありがとうございました。
- xls88
- ベストアンサー率56% (669/1189)
INFO関数を使えばExcelのバージョンが返されます。 =INFO("release") zap35さんが言われるように ”EXCEL***とVersion番号は1:1で対応する” のなら 対応表を作っておいて、そこからExcelの名前を引っ張り出せば良いかも知れません。 下記のようにすればOSのバージョンが返されます。 =INFO("osversion")
お礼
お礼が遅くなり申し訳ありません。 この度は、ご回答を頂きましてどうもありがとうございました。 ご回答頂きましたこと、心から感謝いたします。 本当にありがとうございました。
- zap35
- ベストアンサー率44% (1383/3079)
>関数を使ってできるような話を聞いたことがあります マクロを使わないとできないと思います。こんなマクロでもできそうですがEXCEL***とVersion番号は1:1で対応するみたいですね。 http://officetanaka.net/excel/vba/tips/tips77.htm マクロはALT+F11でVBE画面を開き、VBAProjectの「ThisWorkbook」を右クリック→コードの表示で開く画面に貼り付けてください。 Bookを一旦保存し、再度開くときにFooterに「EXCEL2003 Ver11.0」のような文字列を埋め込みます。 Private Sub Workbook_Open() Dim cstExcel, cstVersion Dim idx As Integer cstExcel = Array("EXCEL5.0", "EXCEL95", "EXCEL97", "EXCEL2000", _ "EXCEL2002", "EXCEL2003", "EXCEL2007") cstVersion = Array(5, 7, 8, 9, 10, 11, 12) ActiveSheet.PageSetup.RightFooter = "" For idx = 0 To UBound(cstVersion) If CInt(Application.Version) = cstVersion(idx) Then ActiveSheet.PageSetup.RightFooter = _ cstExcel(idx) & " Ver" & Application.Version Exit For End If Next End Sub
お礼
お礼が遅くなり申し訳ありません。 この度は、ご回答を頂きましてどうもありがとうございました。 今回はマクロを組まずに解決したかったので、ポイント加算にならず申し訳ありません。 ご回答頂きましたこと、心から感謝いたします。 本当にありがとうございました。
お礼
お礼が遅くなり申し訳ありません。 この度は大変ありがとうございました。 マクロを組まずに解決したかったのでまさに私が切望していた関数でした。 すばらしい回答をどうもありがとうございました。