Excel VBA 複数Excelファイルを2007以降形式に統一できるマクロ 個人用マクロブックに組み込めるよ

Excel これができなきゃ給料泥棒

スポンサーリンク

はじめに

※以下の記述では、Excel2003までのバージョンを「旧Excel」Excel2007以降のバージョンを「新Excel」と呼びます。

貴方の会社にもExcelファイルは沢山あるはずだが、
旧Excelファイル(拡張子.xls)

新Excelファイル(拡張子.xlsxとか.xlsm)
とが混在しているだろうか?

もし混在しているなら、それら沢山のファイルを手早く、新Excelファイル(拡張子.xlsxとか.xlsm)の方に統一してしまいたいとは思わないだろうか。

今回はそれを簡単に実現し、旧Excelファイル(.xls)を複数まとめて新Excelファイル(.xlsx)に変換するマクロを紹介する。

貴方の手元に旧Excelファイルがあるなら、まずこのマクロを使って、可能な限り新Excelファイルに変換しまくってみよう。


・・・と書いたが、そもそも上記の記述がわけ分からんという方はいらっしゃるだろうか?
拡張子って何よとか、Excelの形式がとか何よとか、思われているだろうか?

もしそうだとしたら、はっきり言ってしまうが、ITの必要な基礎知識が欠落していてかなりマズい状態だ。

正直なところ私の職場にもそのレベルの人が多く、しかも彼らはそれに危機感を持たず呑気こいてるのだが、一刻も早く叩き直すべきところだ。

蛇足説明:拡張子とExcelのバージョンについて

もうこの辺は、イチイチ詳細には書かないが、さわりだけ簡潔に書いておく。
そんな解説は蛇足だ退屈だと、飛ばすくらいになっていただきたい。

拡張子

まず拡張子ってのは、ファイルの末尾にピリオド文字「.」を伴って付いてくる「.xls」とか「.doc」とかの語句だ。

これを元に、それがExcelのファイルなのかとか、ファイルの種類を判定するわけだ。

と言ってもそんなの見た記憶ねえよって人も、結構いるんだろうな。

Windowsのマイコンピュータとか開く「エクスプローラ」においては、この「拡張子」を表示するってオプションが、なぜかデフォルトではOFFになってしまっている。

この拡張子表示オプションをONにする設定を、PCを入手したら速攻で最優先で実施してもらいたい。

はっきり言って、事務職とかでこの設定をONにしてない人を見たら、私はそれだけで「こんド素人が」とプッツンしそうになるくらいだ。

設定をONにする方法は、OSのバージョンによってもちょっと違うし「ググれ」で済ませるが、Windows10の場合の設定方法を図示だけはしておく。後はなんとかすること。

Excelの形式・バージョン

次に、Excelの形式とか書いたやつだけど、形式というのはバージョンと言っても良い。
そして貴方は、自分の使用しているExcelのバージョンが何か、分かっているだろうか?

これについても、そんなの分からんという人を多く見ていて、そのたびに呆れてしまっている。

スタートメニューとかでExcelのアイコンを見れば、「Excel2010」とかバージョン名が書かれているはずなのだが。


ちなみに単に「Excel」とだけショートカットに書かれているものしかない場合は、それは「Office365」というやつの可能性が高く、これは分からんとなっても無理はないかもしれない。
でも分からないままにしていては駄目だ。必ず調べ、明らかにすること。

そして先述の、ファイルの種類を示す「拡張子」が、Excelのバージョンによって異なる。

厳密にはけっこう色々と種類があるのだが、ひとまず下表のように覚えておけば十分だ。
Excel2003までなら「.xls」1つで良かったのが、新しいバージョンになると2つになってややこしい。

新Excelなら全部「マクロ有り」の「.xlsm」拡張子にして運用しても問題なさそうだけど、それやってる会社はあるのかな?

ファイル形式マクロ有無拡張子
Excel2003までマクロ無し.xls
マクロ有り
Excel2007以降マクロ無し.xlsx
マクロ有り.xlsm

マクロの動作イメージ

さて、初歩的事項の解説はこの辺にして、今回のマクロの動作イメージだ。
このマクロを実行すると、ファイルを開くダイアログが出るけど、それは旧Excelの拡張子「.xls」のファイルしか開かないようにしてある。

そのダイアログで、ファイルを複数選べるのでまとめて選択し実行すれば、それらが新Excelの形式で別名保存されるというものだ。



元々の旧Excelファイルも、特に削除したりはせずそのまま残すようにしてあるので、処分はご自由に。

ソースコード

では、当該マクロのソースコードを。

このマクロは、Excelの個人用マクロブックに組み込んで使うと良い。

個人用マクロブックとかについては、ここを展開。

オリジナルのマクロをリボンに追加する方法はこちら

個人用マクロブックについては、こちらこちらで述べています。

 

ソースコードの細部の解説はあまりしないけど、余談的な話。ラストの方で
eachWb.Close False
と書いてるやつがある。

これは何がFalseなのか一見すると分からないが、省略せず書くと
eachWb.Close SaveChanges:=False
となる。

SaveChangesってのは文字通りというか、変更を保存するかどうかって話。これがFalseってことは、イチイチExcel上で変更したものを上書き保存はしませんよってこと。

で、なんでこのSaveChangesってのを省略できるかっていうと、今回使ったeachWb.Closeの「Close」ってやつが、その後に付く引数ってやつを
<SaveChanges><Filename><RouteWorkbook>っていう順に持つのだと規定されているから。

そのうち最初に来る<SaveChanges>を省略したっていうのは、自動的に推測してくれるわけ。

よけい難しくなったかもね。私もここまで複雑なこと考えてやってるわけじゃない。
要はSaveChangesってのは、Excel VBAの側で融通をきかせて推測してくれてるんだってこと。それだけ何となく分かってくれればいい。

最後に

冒頭で、貴方の会社に新Excelと旧Excelが混在してないかと書いたけど、実際どうだろう。
私は今回のマクロとか使って、自分の手元からは旧Excelファイルを根絶し新Excelファイルに統一するようにはしている。

でもその辺をあまり考えない人とかは、以前から使ってた旧Excelファイルをそのまま送ってきたりするので、完全な根絶はなかなか難しい。

これもまた分かってない人は即刻改善が必要なのだが、新Excelファイルは旧Excelファイルと比べて改良点が非常に多い。

新Excelファイルの改良点
  • 行・列(縦・横)のセルの数が全く違う。旧Excelは65536行・256列→新Excelは1048576行・16384列
  • SUMIFS関数など、ガチで有用な関数が増えてる。
  • テーブルとか色々、新機能が豊富に加わっている。
  • 条件付き書式とか、既存の機能についてもやれることが増えまくってる。
  • という具合で、大まかにで良いからとにかく凄く改良されたのだということは押さえてほしい。

    「いや、自分はそんな新しい機能とか使い切れないから」とかいうことは言わないでほしい。
    ガラケーがどんどん世間で使われなくなってきたからスマホに乗り換えようくらいのノリで良い。

    旧Excelを使い続けるなんて、何か考えがあってならともかく、惰性で続けるのは即刻やめよう。
    そして、新Excelの快適さに早く馴染むようにしよう。
    …ってか、旧ExcelなんてExcel2003までの話で、いつの時代の話をしてるんだって感じなのだが。

    スポンサーリンク