先週、Windows 8 が発売されましたが、それに関連しまして
今日は、来年早々に国内販売予定である次期Officeのバージョン2013について書きます。
先月、品川でマイクロソフトの「The Microsoft Conference 2011(MSC 2011)」というイベントがありまして、私もちょっとそれに参加して見聞きして来ましたので、それに基づいて以下ご紹介します。
まず、私としては一番気になるVBAのバージョンについてなんですが、当日の会場で体験できた版のVBE(プログラムの画面)のバージョンは 7.1 でした。
現行の2010が 7.0 ですので、これは実際に触って確認したところでも見た目にも全く変わった所はなく、操作性に関しては全く問題はありません。(VBA自体の詳しい中身の互換性については当然ですが今後の検証が必要です。)
それで、次期バージョンの Excel2013 で何が変わるのか?
という所を、当日のマイクロソフトのプレゼンテーションを聞いた話で(あくまでも私の記憶に残っている限りでですが・・)一通り挙げてみますと、
・「フラッシュフィル」機能
・「おすすめグラフ」機能
・「おすすめピボットテーブル」機能
・「タイムラインスライサー」機能
・「アニメーション」機能
・「タッチデバイス」対応
これらの新たな機能が加わったということです。
ちょっとこれら記憶する限りで以下に解説をしてみます。
まず、「フラッシュフィル」というのは、皆さん今でもよく使ってると思われる現行の「オートフィル」の機能に似たイメージだと思えば分かりよいかと思いますが、それを更に進化させた入力補助機能だという風に思い浮かべてください。
たとえば、人の名前で「姓」と「名」が別々の列に分かれているシートがあった場合に、これを「氏名」として(姓と名をくっ付けて)新たな列に入力したいといった時に、その「姓と名」を最初の2~3人分入力していくと後は(「オートフィル」のように)データの最後まで自動で入力ができてしまう、といった機能です。
もし、これをいつもの三太郎流初心者向けマクロで簡単に作ってみれば、
+---------------------------------------------
Sub Macro1()
n = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To n
Range("A" & i).Select
a = ActiveCell.Value
Range("B" & i).Select
b = ActiveCell.Value
Range("C" & i).Select
ActiveCell.FormulaR1C1 = a & b
Next i
End Sub
+---------------------------------------------
といったプログラムになるかと思います。
(ざっくりではありますが、、これなら「マクロの記録」を使ってささっと作れば、当講座でいつもやってる作り方であれば、ものの5分もあれば誰でも完成できる話だと思いますから是非チャレンジしてみてくださいね。)
また、この機能では数字だけのデータ(郵便番号や電話番号など)を送付ラベル等の印刷用に、間に - のマークを入れたい(たとえば郵便番号なら1234567 → 〒123-4567)といった場合にも、最初の2~3個を入力してそのパターンを認識させるだけで「オートフィル」のように最後まで同じパターンで引っ張って、自動で入れてくれます。
これも、ごく単純にマクロでやるのであれば、
+---------------------------------------------
n = Cells(Rows.Count, "D").End(xlUp).Row
For i = 2 To n
Range("D" & i).Select
a = ActiveCell.Value
Range("E" & i).Select
ActiveCell.FormulaR1C1 = "〒" & Left(a, 3) & "-" & Right(a, 4)
Next i
+---------------------------------------------
と、まぁざっくりこんな感じに組めるかと思います。
この講座で学んできた読者の皆さんであれば、このらの程度のものはもうごく簡単にササッと作れる(?!)だろうと思いますので、「これを元に色々な応用が利く」という意味で言えば、このようなExcel2013の便利な新機能に頼るというよりも、自分でこうしたちょっとしたマクロを組んで利用したほうが、より便利で応用も利いて利便性も高くて良いかも知れませんよね。
次の「おすすめグラフ」や「おすすめピボットテーブル」の機能ですが、
これは、指定のデータに沿った「おすすめ」のパターンが複数表示されて選べるようになるという機能で、グラフが苦手という人には朗報です(かね)。その「おすすめ」されたものが、どこまで的を得ているか?ということは判りませんが、
「おすすめ」の中から選んでワンクリックするだけで、グラフもピボットテーブルも即完成!となるのであれば、ウィザードとかグラフツールとか、そんな七面倒くさいものをもう覚える必要もなくなるわけですから、これは相当楽ちんになりますよね。
あと、「タイムラインスライサー」や「アニメーション」といったちょっと聞きなれない名前の機能についてですが、
「タイムラインスライサー」というのはグラフの表示期間がスライス表示(よくあるスライド操作で)できるといったもので、リアルに期間を変えてその場で見ることができるというものです。
「アニメーション」機能の方は、とにかく(何かが)動きます。これはよく覚えていなくてすみませんが、とにかく「何かが動いたなぁ~」程度の記憶しか残ってない程度のものだった気がします。。
最後に、これが多分今回バージョンアップの目玉の「タッチデバイス」対応についてですが、
これは皆さんもうご承知の方も多いと思いますが、次期OSの「 Windows 8」では、昨今何かと流行のタッチパネル操作というのが出来るようになるということで、それが次の「Office ソフト」にも対応するということです。
今回のマイクロソフト社のプレゼンテーションでの説明によれば、「あらゆるデバイスでOfficeを利用可能にする。」というのが同社のOffice製品開発の方針だということですので、今後とも「Windowsに新しく付いたインタフェイスはOfficeにも必ず付けますよ。」と、製造元のマイクロソフトは言っているのだろう、と思います。
それで、その特徴としては「Excel 2013」等のOfficeにも“タッチモード”というのがついていて、そのモードに切り替えると選択等のメニューが普段より大き目に(指で触りやすく)画面表示されるという仕組みとなっています。
あと一つ、(これはExcelの話ではないみたいなんですが・・)私個人的に気になったのが、補助線が出て配置揃えがし易くなるという機能がパワーポイントには付いたという話がありまして、
それは、Excelでもテキストボックスとかアイテムとか複数配置の際にはぜひ欲しいなぁと思っていた機能なんで・・・、でもたぶん、今回はパワポだけに装備された新機能のようです。
で、バージョンが上がっていく上でマクロに関して最も重要なことは、
バージョンアップにも大小(大幅な時と多少の時)というのがありますので、次回の2010から2013へのバージョンアップというのは、明らかに小規模なバージョンアップであると思いますが、Officeソフトの場合にはここ10年で言うと、2003→2007のバージョンアップの際に大幅な改造というのが行われたわけです。
Excelの2000や2002や2003のあいだや、Excel2007や2010(や、今度の2013も含めて)のあいだ、その中での行き来というのは特に問題なしに気にしなくてもよいわけであるんですが、大幅なバージョンアップがなされた(97~2003まで)と(2007~)のあいだを跨ぐような使い方をする時は、特に気をつけなければなりません。
よくまれにですが、「Excel2007で作ったマクロが2003で動かない!」などと言って怒っているような人もおられるようなんですが、それはあくまでも素人さん的な考え方でありますので、コンピュータシステムのことをよく知ってるプロの人間であれば、「上流のバージョン(新しい方)で作ったプログラムが下流のバージョン上でも動くのが当然だろう・・・」なんてことは、、考えもしません。
それは決して製造販売元のマイクロソフトに文句の言える話ではない訳です。いくらさすがのマイクロソフトといえども、未来から過去は変えようがありませんから。。(笑)
ITの世界には、「パージョンアップ」という言葉はあってもその逆の「バージョンダウン」という言葉は存在しません。(バージョンアップに失敗して前のバージョンに戻すという行為のことを、間違ってそう称して使ってるという人がたまに居るだけです。。)
もし動いたとしても、それは、「たまたま運よく動いただけ。」であって常識的には「動くわけがない。」と考えるのが正しいわけです。未来から過去は変えようがありませんから。。
2007や2010のバージョンで作ったマクロでも、特に罫線や色関係や新しい関数を使っていないものであれば、2003以前のバージョンでも動くという場合は多いですし、最初ダメでも出たエラー行を片っ端から削除していくという方法で動くということもありますので、もしそれでも動けばいいというのであれば、それはそれでいいわけではありますが、、
基本、2007や2010で作ったマクロが下位の2003でも使える、と考えるのは、”まるで素人考え”なだけでありますので、その不満をネット上に書き込んだりしてプロのSEやプログラマーの人達に笑われてしまわぬよう気を付けてください。
小規模なバージョンアップ間での移行(2010から2007とか)や、大規模な場合でも下流から上流へ(2003から2007や2010とか)は、特に大きな問題は起こりません。
もし、下流から上流へ(古い方から新しい方へ)移行して問題があれば、それは製造元のソフト会社に文句を言える話であるわけです。(過去は変えようがないですが、未来はいくらでも変えられるわけですから、作った会社はちゃんとその辺を考えて作る責任があるわけです。)
こんな荒んだ時代(!?)ではありますが、我々、現代に生きる者達の頑張り次第で、輝かしい人類の未来を切り開くということは可能でしょうし、核兵器や原発ゼロの世界という未来も、実現できるかもしれません。。。(すいません、これは余談です。)
最後にバージョンの基本についてまとめますと、
大規模なバージョンアップが行われた際(2003→2007)のマクロの行き来は、
下流から上流へ(Excel2000や2003 から 2007や2010への移動)は、○
上流から下流へ(Excel2007や2010 から 2000や2003への移動)は、×
これが根本的な、基本中の基本です。
バージョンを混在して使わなければならない状況の方は(自宅のPCがOffice2010で、会社は未だ2003だ、といった人は)このことだけはよくよく意識をした上で、マクロ作りに励んでいただくと大丈夫と思います。
コンピュータプログラムというものは(ここで教えているマクロを含めて)とても便利な反面、元来よりそうした厄介な面も持ち合わせている・・・というものでもありますので、そうご理解ください。
▼ゼロから7日間でスタートする!マクロ講座▼
エクセルマクロ(VBA)の『スターターズ・キッド』7日間メールセミナー
只今、無料登録受付中です↑
前回 の続きからです。
あとは、ついでに(ファイルを開きっぱなしでは何ですので)開いたブックを閉じるというところまでマクロで自動処理させたいと思います。
5)
それでは、再びマクロの記録を行います。
────────────────────────────+
1.まず始めに、タスクバーからブック「Book1」の方を開いてください。
2.ここで、マクロの記録を開始します。
[ツール(T)] → [マクロ(M)] → [●新しいマクロの記録(R)...]
→ マクロの記録画面が出るのでそのまま[OK]をクリック。
3.そうしたら、今度はタスクバーからブック「data167.xls」の方を
開いてください。
4.次に、いま開いたブック「data167.xls」を下記の操作で閉じます。
[ファイル(F)] → [閉じる(C)] →「保存しますか?」→「はい」
※ここでは必ず「はい」(保存する)を選んでください。
5.マクロの記録を終了します。
[ツール(T)] → [マクロ(M)] → [■記録終了(R)]
────────────────────────────+
これで、下記のようなマクロ(Macro2)が記録されたと思いますので、
++++++++++++++++++++++++++++─
Sub Macro2()
'
Windows("data167.xls").Activate
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
++++++++++++++++++++++++++++─
あとは、これを先ほどのMacro1の最後で呼んで(Call Macro2 して)あげればよいだけですので、完成マクロは下記のようになります。
なお、Macro2の最初にあった Windows("data167.xls").Activate の行は特に要らない(ファイル名の2重の指定になってしまう)ので削除してあります。
++++++++++++++++++++++++++++─
Sub Macro1()
'
a = ActiveCell.Value
Range("A2").Select
Workbooks.Open Filename:= _
"C:\Documents and Settings\My Computer\My Documents\data167.xls"
Sheets("Sheet2").Select
Range("B2").Select
ActiveCell.FormulaR1C1 = a
Call Macro2
End Sub
Sub Macro2()
'
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
++++++++++++++++++++++++++++─
転記したい元データのセルを選択した状態でこのMacro1を実行してください。
(今回は、保存して閉じるところまで自動でされますので、実行後に転記先のブック「data167.xls」を普通に開いて確認してみてください。)
今回のブック操作でちょっと注意が必要なのは、2つのブックを開いてる時のどちらのブックを開いて置くのか?という点ですが、
マクロの記録を開始する場合は、必ず記録している元ブックの方(プログラムのある方)を開いてから・・という点だけ注意してください。
今回勉強したブック操作をまとめますと、複数ブックを扱う場合のポイントは、
・ファイル操作は必ずExcelのメニューから行うこと。(フォルダから
ファイル名をダブルクリックして開く操作は、Windowsの操作であって
Excelの操作ではないからマクロは記録されません。)
・マクロの記録開始前には必ず記録させる方のブックを前面に表示させる
こと。(自動作成されるマクロは、マクロの記録開始時に開いている
ブック(前面のブック)に記録保存されます。)
という2点です。それだけご注意いただければバッチリです。
今回はこれで終了です。
▼ YouTube再生25万回突破しました!
「エクセルマクロを10分で理解する(動画)」
前回 の続きからです。
3)
それでは、このプログラムにちょっと手を加えていきます。
────────────────────────────+
1.まず、印をつけておいた行
ActiveCell.FormulaR1C1 = "111"
を、下記に修正してください。
a = ActiveCell.Value
2.次に、同じく印をつけておいた行
ActiveCell.FormulaR1C1 = "222"
を、下記に修正してください。
ActiveCell.FormulaR1C1 = a
────────────────────────────+
修正した後のプログラムは下記の様になります。
++++++++++++++++++++++++++++─
Sub Macro1()
'
a = ActiveCell.Value
Range("A2").Select
Workbooks.Open Filename:= _
"C:\Documents and Settings\My Computer\My Documents\data167.xls"
Range("B2").Select
ActiveCell.FormulaR1C1 = a
Range("B3").Select
End Sub
++++++++++++++++++++++++++++─
4)
それでは、さっそく実行してみましょう。
────────────────────────────+
1.エクセルの画面に戻って、
2.まず、実行する前にテストデータを準備します。
以下のテキスト(計4行)をコピーして、セルA1の位置に
そのまま貼り付けてください。
転記するデータ
あいうえお
かきくけこ
さしすせそ
3.データがセットできたら、その中の2番目のデータ「かきくけこ」
(セルA3)を選択してください。
4.では、実行します。
[ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面
が出るので、そのまま[実行]をクリック。
────────────────────────────+
実行した結果、「data167.xls」が開き、その転記場所(Sheet2のセルB2)に「かきくけこ」と表示されていればOKということになります。
要するに、Excelの場合のデータの保管先というのは
3つの階層 (ブック → シート → セル)
となっていますので、この3階層の指定方法さえ分かっていれば事足りるわけです。(今回は、特にこの内の「ブック操作」について勉強していますが、他のセルやシートの指定方法については、過去にこの講座で色々と勉強してきましたのでそちらご参考ください。今回は割愛します。)
あとは、ついでに(ファイルを開きっぱなしでは何ですので)開いたブックを
閉じるというところまでマクロで自動処理させたいと思います。
次回へ続く ...
▼ YouTube再生25万回突破しました!
「エクセルマクロを10分で理解する(動画)」
今回は、2重入力の防止という観点から表題の「他のブックにデータを転記する」というマクロを作ってみたいと思います。
2重入力の問題というのはどんな会社でも多々あるだろうと思いますが、本来的にはデータの一元管理というのが出来るのが理想であるわけです。
が、現実的には、既に運用をしている数々のExcelシートを、今さら統一させるということは中々難しく、2重入力どころか、3重だったり4重だったりする場合もあろうかと思います。
そこで今回は、入力したデータを1回の入力で済ませる為の他のブックに自動転記をするといったマクロを作っていきます。(ただし、今回は「他のブックへ」という所だけに絞って話を進めていきます。)
0)
では、今回はまずその前準備として転記先のブックを予め作成する
ところから始めます。
────────────────────────────+
1.エクセルを起動させます。(空のエクセルを立ち上げてください)
2.まずは、シート[Sheet2]を開いてください。
3.次に、B1のセルに「 ↓転記場所 」との文字を入力してください。
4.次に、一旦いま開いている[Sheet2]のA1のセルを選択して
から、[Sheet1]の方を開き直してください。
5.そうしたら、このブックに名前を付けて保存をしてこのファイル
を閉じます。
※保存する名前は「data167.xls」とし、保存先のフォルダは
何処でも構いませんが、なるべくデフォルトのままで保存して
ください。(以降はそれにて解説していきます。)
────────────────────────────+
1)
それでは、いつものようにマクロの記録を使ってその基となる
プログラムを作っていきます。
────────────────────────────+
1.エクセルを起動させます。(再び空のエクセルを立ち上げてください)
2.ここでマクロの記録を開始します。
[ツール(T)] → [マクロ(M)] → [●新しいマクロの記録(R)...]
→ マクロの記録画面が出るのでそのまま[OK]をクリック。
3.まず、いま選択中のセルに(セル移動せずに)、111 と打って
ください。
4.打ち終わったら一度[Enter]キーを押して(入力モードを解除して)、
次に、先ほど作成しておいたデータのブックを以下の操作にて
開きます。
[ファイル(F)] → [開く(O)...] →「ファイルを開く」画面で、
先ほど保存したブック「data167.xls」を開く。
(※ここではWindowsのフォルダからファイル名をダブルクリック
する方法で開くというのはしないでください。)
5.次に、シート[Sheet2]を開きます。
6.B2のセルを選択し、222 と打ってください。
7.打ち終わったら一度[Enter]キーを押して入力モードを解除して、
[ツール(T)] → [マクロ(M)] → [■記録終了(R)]とやって、
マクロの記録を終了させます。
8.最後に、いま開いたブック「data167.xls」を閉じます。
[ファイル(F)] → [閉じる(C)] →「保存しますか?」→「いいえ」
────────────────────────────+
2)
では、いま作ったプログラムの中身をのぞいてみます。
────────────────────────────+
1.まず、いつもの様にプログラム用の画面を表示させます。
[ツール(T)] → [マクロ(M)] → [Visual Basic Editor(V)]
2.この画面の左上半分の[+標準モジュール]という所の+の部分を
クリックすると、そのすぐ下に[Module1]と表示されるので、その
[Module1]をダブルクリックします。
────────────────────────────+
++++++++++++++++++++++++++++─
Sub Macro1()
'
ActiveCell.FormulaR1C1 = "111"
Range("A2").Select
Workbooks.Open Filename:= _
"C:\Documents and Settings\My Computer\My Documents\data167.xls"
Sheets("Sheet2").Select
Range("B2").Select
ActiveCell.FormulaR1C1 = "222"
Range("B3").Select
End Sub
++++++++++++++++++++++++++++─
※上記プログラムの4行目「 "C:\Documents and Settings ・・・」の部分は、個々のPC環境やファイル保存先によって異なります。
ここのファイル名は通常、フルパス名で指定します。ファイル名が確かに合っているのに「ファイル名が見つかりません。」とのエラーが出る場合がよくありますが、それはフォルダ指定の問題になるわけです。
目的のブックがカレントの(現在の)フォルダにある場合には、ここは短く以下のようにパス名は外してファイル名だけを指定すればよいのですが、
"C:\Documents and Settings\My Computer\My Documents\data167.xls"
↓
"data167.xls"
カレントフォルダというのは、ファイルの保存場所を変えたりするとその都度変わっていく(移動する)ものですので、固定の場所ではありません。
なので、マクロを実行した時に何処がカレントフォルダなのかは基本予測不能なものなので、フルパス名にて指定する必要があります。(マクロの記録を使って作ればどんなに長いフルパス名でも間違うことはありませんので、大変に便利ですね。)
今、選択中のセルからデータを取得して、その転記先( ブック → シート → セル )を指定し、書き込む先に目印( 222 )をつけた。
という状態の元プログラムを、いつものようにマクロの記録で自動作成したということになります。
「マクロの記録」を使えば、ここまでプログラムは1文字も書く必要がありませんので、初心者にはとってもやさしい方法ですね。あとは、これをちょっと手直しするだけです。
次回に続く ...
当講座で初の「本」が出ました! 手軽にサクッと作れるマクロが満載!