Excelバージョンの違いによるマクロの違いについて


2014年4月でMS-Office2003(Excel2003バージョン)の延長サポート期間が終了しました。
もう、~2003以前のバージョンの一切のサポートは行われません。
Excel97からExcel2003のバージョン(Excel97/2000/2002(XP)/2003)までは、
エクセルの基本操作にさほどの違いはありませんでしたが、
Office2007(Word2007,Excel2007, PowerPoint2007,等)のバージョンから、基本操作の
ユーザーインターフェイスが従来の メニュー形式 から リボンと呼ばれるものへ と大きく変わっています。
なので、Excelの操作に関しても2003でマスターした方が Excel2007以降のバージョンへ乗り換えた場合、
マクロの基本操作(マクロの記録や実行やファイル保存、等々)において、このリボンという新しい
ユーザーインターフェイスの使い方をまず覚える必要があります。
(慣れるまでは大変使いづらく、「あのメニューはどこ?」などと戸惑うことも多々あろうかと思います。)
ですが、
ことマクロ(VBA)の編集画面に関していえば、 Excel2007以降でもExcel2003以前のバージョンから
特に大きな変更はありません。
今、このマクロ講座でプログラム作りを行なっているVBAの開発環境自体に、特に新旧のバージョン
の違いというのはありません。
これは、VBAのバージョンには特に変更がなかったためで、 Excel2003に搭載されている
VBAも、Excel2007のVBAも、どちらもVBA6というバージョンのものです。
(VB6.X以降の数字は多少変わっていますので、微変更はありましたが。。。)
少々難しい事を言いましたが、単純に言ってしまうとMS Officeのバージョンアップ
(97/2000/2003→2007/2010/2013/2016/2019/2021)によって、
エクセルは大幅変更あり! マクロ(VBA)はほぼ変更なし!!
ということが言えます。
なので、旧バージョンのエクセルで作ったマクロプログラムでも、初心者のレベルであれば
(特に特殊な処理をやっていない限りでは)、 Excel2007以降のバージョン上でも正常に
動かすことができますし、これまで通りに修正も可能です。
ただし、セーブをする段階で2007以降のファイル形式(拡張子が違うもの)となっています
ので、その点はご注意ください。
(2003以前の拡張子は.xls→2007以降は.xlsm(マクロ有効ブック)です。)
このマクロ講座の操作上の説明は、2013年の年初より全てエクセルの現行バージョン
(Excel2007からExcel2021まで)のリボン形式の操作に移行しましたが、
プログラムの画面(VBEの画面)においてはその操作方法等に特に違いはありませんので、
もし旧バージョンから乗り換えた方で、メニュー操作とリボン操作との違いについて少々慣れてきた方
であれば、特に何の支障もなく当講座のメルマガ配信の実習レッスンを行なうことができます。
ということで、
近い将来、2003からOffice2010~2021へ(更には Microsoft 365 への乗り換え予定という方でも
どうぞ安心してこのままマクロの勉強を続けてください。
ちなみに、
Excel2003で作ったマクロ入りのファイルをExcel2010/2013/2016/2019/2021のバージョンで開いてマクロ実行
させる場合には、まず、上方の薄黄色い帯に表示される「コンテンツの有効化」
(詳しくはこちらを見てください→ マクロを有効にする方法)
というボタンを押してください。それだけでマクロの利用開始はOKです。
【補足1】(32ビットと64ビットでの要変更箇所)

もしこのようなエラー画面が出た場合には、これは、古い32ビットで開発したVBAを64ビットで
実行した際に起るエラーです。)、プログラム中にある下記の1箇所だけ修正を加えれば正常に
動作します。
Declare Function ・・・
↓
Declare PtrSafe Function ・・・
(Declare と Function の間にただ PtrSafe を加えるだけでOKです。これを「Declare Function」と記載のある全ての行で行います。)
【補足2】(コンピュータソフトの常識事)
但しなんですが、その逆方向(2007以降のバージョンから、2003以前のバージョンへ戻る・・)
というのは、基本ダメです。
バージョンが上がっていく上でプログラムに関して最も重要なことは、
大幅な改造が行われた(2003→2007)を境として、その2007以降のバージョンで作成したマクロが
2003以前の古いバージョンのExcel上でも正常に動く・・
ということはありません!ということです。
まず、バージョンアップにも大小(大幅な時と多少の時)というのがありますので、
最近の2007から2021までのバージョンアップというのは明らかに小規模なバージョンアップであった
わけなんですが、2003から2007へのバージョンアップの際には大幅な改造というのが行われました。
よくネット上などでは「Excel2010で作ったマクロが2003で動かないぞ!」などと言って怒ってるような人も
まれにですがおられるようなんですが、、それはあくまでも素人さん的な考え方でありますので、
コンピュータシステムのことをよく知った専門家であれば「上流のバージョン(新しい方)で作った
プログラムが下流のバージョン(古い方)の上でも動くのは当然だろう・・・」なんてことは、
考えもしません!
それは、決して製造元のマイクロソフト社に文句の言えるような話ではなく、いくらさすがの
マイクロソフトのエンジニアといえども、未来から過去は変えようがありませんから。。(笑)
ITの世界には「パージョンアップ」という言葉はあっても、その逆の「バージョンダウン」という
言葉は存在しません。(バージョンアップに失敗して前のバージョンに戻す・・という行為のことを、
間違ってそう称して呼んでる人がたまに居るというだけに過ぎません。。)
もし仮にそれが動いたとしても、それは「たまたま(運よく)動いただけ。」ということであって、
常識的には「動くわけがない。」と考えるのが正しいわけです。(未来から過去は変えようがありません。)
2007や2010や2013や2016や2019や2021のバージョン(Office365含む)で作ったマクロの場合でも、特に罫線や色関係や新種の関数等を
使っていないものであれば、2003以前のバージョンでも動くという場合は多いですし、
仮に、最初はダメであっても出たエラー行を片っ端から削除していくという方法で、正常に動くようになる
ことも多々あると思いますので、もしそれで動けばいいというのであれば、それはそれでありなわけ
ですが、
基本、2007や2010や2013や2016や2019や2021で作ったマクロが、下位バージョンの2003以前でも使える、
と考えるのは明らかに”素人考え”なだけである、とご理解ください。
小規模なバージョンアップ間での移行(2021や2019から2010とか)や、大規模な場合でも下流から上流へ
(古い方から新しい方へ)の場合には、特に大きな問題は起こりません。
もしそれで問題があれば、それは製造元のソフト会社に文句を言える話であるわけです。(過去は
変えようがないですが、未来はいくらでも変えられるわけですから、作った会社はちゃんとその辺を
考えて作るという責任があります。)
最後に、今回お話した「複数バージョン利用での基本的な考え方」ということについてを
まとめますと、
大規模なバージョンアップが行われた際(2003→2007)のマクロの行き来は、
上流から下流へ(Excel2007~2019 から 2000や2003への移動)は、×
下流から上流へ(Excel2000や2003 から 2007~2021への移動)は、○
小規模だったバージョン間のマクロの行き来は、
Excel2010や2016や2021 の間での行き来は、○
Excel2000や2002や2003 の間での行き来も、○
これが根本的なバージョン管理の基本中の基本となりますので、お間違えのないようにしてください。
バージョンを混在して使わなければならない状況の方は(会社のPCがOffice2019で、自宅は未だ2003だ、
といった人は)、このことだけはよくよく意識をした上で、マクロ作りに励んでいただくと大丈夫かと思います。
コンピュータプログラムというものは(ここで教えているマクロを含めて)とても便利な反面、
元来より そうした厄介な面も持ち合わせている・・・というものでもありますので、そうご理解ください。
NEXT >>
・マクロとは何か?
トップページ(目次など)へ
■ 無料メールマガジンの登録(まぐまぐより配信中!)

Go!Go! エクセルマクロをはじめよう! (マガジンID:0000135169)
|
マクロ作りのヒントやノウハウ、IT業界の動向や話題などなど、この道35年のベテラン SEが楽しくわかり易く直伝します。(完全まぐまぐ配信なので登録/解除も安心です!) |

