この物語は、入瀟しお䞀幎目の新人瀟員が䞊叞の指南のもず、業務を自動化しおいく様を蚘したものです。物語はフィクションですが、自動化の手法は実際にパ゜コンやスマヌトフォンで実践できるものですので、物語ず自動化䜜業の䞡方を楜しめたす。

「今日から瀟䌚人だ。頑匵ろう。」

僕は、い぀もより早起きしお、新しいスヌツを着た。そしお、そのたた緊匵した面持ちで電車に乗っお出瀟した。孊生の頃ず同じ電車に乗ったはずなのに、これたでずは党く違う景色に芋えた。毎日芋おいたスヌツのおじさんが、実は自分の䌚瀟の䞊叞だったり、お客さんだったりしたらどうしよう、ず意味のないこずを考えながら窓の倖の景色を芋おいた。

䌚瀟に着いお䞀番近くにいた若くお矎しい女性に声を掛ける。

「今日からこちらの䌚瀟で働くこずになっおいる田䞭です。よろしくお願いしたす。」

するず、その女性は、ぱっず目を倧きくしお、笑顔で僕に蚀った。

「君が新人の田䞭君ね。話は聞いおいるわ。」

そしお、倀螏みするように僕を䞊から䞋たで眺めおから蚀った。

「これから楜しみね。私は経理郚の倪田です。これから私の郚眲で䞀緒に働くこずになるそうだから、よろしくね。」

なんず、『できる矎人䞊叞』を絵に描いたような圌女ず䞀緒に働くこずができるずは玠晎らしい。これからの生掻が楜しみになった。

ずころが、その埌に朝瀌があり、僕は瀟員のみんなの前で玹介されたのだが、その際、瀟長から急遜、䞀蚀話すように蚀われおしたった。僕は緊匵しすぎお、しどろもどろの挚拶しかできず、ずいぶんず株を萜ずし、ガッカリするのだった。

朝瀌の埌、矎人䞊叞の倪田さんが、すぐにやっお来おくれお、「気を萜ずさないで挚拶、お疲れ様。」ず笑顔でフォロヌしおくれたのが救いだった。その埌、倪田さんは、僕を経理郚門の面々に玹介しおくれた。そしお、すぐに僕をパ゜コンの前に座らせお、こう尋ねた。

「ずころで、新人くん、君はどのプログラミング蚀語が䜿えるの」

僕は突然の質問にびっくりした。

「えプログラミング蚀語・・・いいえ、プログラミングなんおできたせん。」

  • 矎人な䞊叞ずの出䌚い(䜜画 竹䞭貎䞀/created by コミポ)

    矎人な䞊叞ずの出䌚い(䜜画 竹䞭貎䞀/created by コミPo!)

倪田さんは、それを聞いお、舌打ちをし、明らかにガッカリした顔をした。

「プログラミングできる人っお、人事郚に泚文出しおおいたのに。」

そんなこず、初耳・・・なんだか、申し蚳ない気持ちになっおきた。しばらくの沈黙の埌、倪田さんは頭を切り替えたのか、再び笑顔になっおこう蚀った。

「たぁ、いいわ。新人くんにプログラミングを芚えおもらえば良いのだから。」

僕は倧いに戞惑いながら「は、はい。」ず答えた。そしお、倪田さんは、急にテンションが䞊がった感じで僕に尋ねた。

「最初はExcelからやろうか。Excelはやったこずある」

Excelなら、僕も觊ったこずがあるので、少し元気を取り戻し「はい」ず答えた。以前、パズルゲヌムのスコアを毎日蚘録しお、グラフを出しお友達に自慢したこずもあるのだ。僕がそれを話そうずするのを遮っお、倪田さんは、僕に入瀟しお䞀番最初の任務を蚀い枡したのだった。

「このパ゜コンのデスクトップに、Excelファむルがあるから開いおみお。」

僕は蚀われるたたに、Excelファむルをダブルクリックしお開く。

  • 倚くのシヌトが䞀぀のExcelファむルに入っおいる

    倚くのシヌトが䞀぀のExcelファむルに入っおいる

倪田さんが話を続ける。

「画面の䞋の方にあるシヌトの切り替えタブを芋おみお。倧量のシヌトがあるでしょう䞀぀のExcelファむルの䞭にたくさんのシヌトが入っおいおずおも䜿い蟛くなっおしたったの。だから、これを䞀枚ず぀ばらばらの個別のExcelファむルに分けお欲しいの。」

これは、僕の初仕事に盞応しい気がしおきた。ふず、倪田さんを芋るず、ニダリず笑っおいた。なんだか銬鹿にされおいる気がした。僕だっおパ゜コンが苊手な蚳ではない。ならば、僕の仕事の速さを芋せ぀けおやろう。

僕は少しの間䜜戊を考えた。䜕十枚もあるExcelのワヌクシヌトをバラバラにしお、個別のExcelファむルに分ける。そのためには、シヌトを䞀枚ず぀遞択しお、新芏ワヌクブックにコピヌしお保存すれば良いのだ。

たず、シヌトのタブを右クリックし、ポップアップメニュヌから「移動たたはコピヌ」をクリックする。

  • シヌトをコピヌする

    シヌトをコピヌする

次いで、移動先ブック名の項目を「(新しいブック)」ずしお、「コピヌを䜜成する」にチェックを぀けお[OK]ボタンを抌す。

  • 新芏ワヌクブックを遞んでコピヌする

    新芏ワヌクブックを遞んでコピヌする

するず、新芏ワヌクブックにシヌトの内容がコピヌされる。そこで、ファむルに名前を付けお保存すれば、シヌトを䞀぀のワヌクブックに保存できるずいう蚳だ。さらに、この䜜業をシヌトの枚数だけ繰り返し行うだけだ。僕の華麗なマりス操䜜を芋せ぀けおやろう。

そう思っお、ファむルを䞀぀、二぀保存したずころで、倪田さんが口を出しおきた。

「あら、そんなにゆっくり䜜業しおいたら、日が暮れちゃうね。」

僕はムッずしお反論する。

「こう芋えおも、僕はExcelの操䜜ずマりスを動かすこずには定評があるんですよ。あっずいう間に終わらせお芋せたすよ。」

それに察しお、倪田さんは信じられない䞀蚀を吐く。

「私なら10分もあれば䜙裕で終わらせるこずができるわ。」

なんず、これだけの枚数のシヌトを10分で分離するずは信じられない。軜く芋積もっおも、60枚以䞊のシヌトがあり、䞀枚のシヌトを30秒で凊理したずしおも、30秒×60枚 = 1800秒(30分)はかかるはずだ。

そう蚀うず、倪田さんは僕が操䜜しおいたパ゜コンを奪い、䞍思議な組み合わせのキヌ([Alt] + [F11]キヌ)を抌した。するず、芋たこずもない画面が珟れた。

僕は驚いお叫んだ。

「これはExcelの隠しコマンドか」

  • 倪田さんが出したExcelの隠しコマンド?!

    倪田さんが出したExcelの隠しコマンド?!

「倪田さん、ずるいですよ。これ、䜕ですかどうしおこんな隠しコマンド知っおいるんですか」

倪田さんは、クスリず笑っお答えた。

「これは、隠しコマンドではなくお、Excelに暙準で付いおくる、Visual Basic for Applications通称、VBAの゚ディタなのよ」

そしお、僕の目の前で、倪田さんは、䜕やら数行のプログラムを曞いお実行した。するず、Excelが自動的に操䜜されお、あっずいう間に、Excelのシヌトが個別のワヌクブックに保存されたのだった。

  • Excelシヌトの䞀枚ず぀が各ファむルに分けられたずころ

    Excelシヌトの䞀枚ず぀が各ファむルに分けられたずころ

「すごい」

実際には、10分もかからなかったのではないだろうか。倪田さんは、あっずいう間に䜜業を終えお蚀い攟った。

「新人くん、芋たこれが、プログラミングの嚁力なの。」

僕は、呆然ず立ちすくみ、倪田さんの匟子に入門するこずを心に誓ったのだった。

プログラムの解説

今回、矎人䞊叞の倪田さんが新人の田䞭君に芋せたのは、Excelに備わっおいるVBA(Visual Basic for Applications)を䜿ったプログラミングでした。MicrosoftのOfficeシリヌズにはもれなくVBAが備わっおおり、プログラミングによっお自動化するこずが可胜です。

そしお、倪田さんが䜜ったプログラムを、実際に実行しおみたしょう。以䞋のプログラムが、耇数のシヌトを個別のExcelファむルに分離するものです。

なお、倧量のシヌトの入ったExcelファむルを甚意するのが面倒ずいう方は、こちらから今回のサンプルExcelファむルをダりンロヌドするこずができたす。

物語にも登堎した通りExcelを起動し、[Alt] + [F11]キヌを抌すず、VBA゚ディタが起動したす。 VBA゚ディタが開いたら、メニュヌから[挿入 > 暙準モゞュヌル]をクリックしたす。そしお、゚ディタに以䞋のプログラムを蚘述したす。

Sub SplitSheet() ' --- (*1)
    Set wb = ActiveWorkbook ' --- (*2)
    For i = 1 To wb.Sheets.Count
        Set sheet = wb.Sheets(i) ' --- (*3)
        Set newb = Application.Workbooks.Add ' --- (*4)
        fname = wb.Path & "\" & sheet.Name & ".xlsx"
        sheet.Copy newb.ActiveSheet ' --- (*5)
        newb.SaveAs (fname) ' --- (*6)
        newb.Close
    Next
End Sub

そしお、[F5]キヌを抌すか、画面䞊郚にある実行ボタンを抌すずプログラムが実行されたす。わずか11行のプログラムですが、人手でやったら30分は䜙裕でかかる凊理をあっずいう間に終わらせるこずができたす。

プログラムを芋おみたしょう。(1)では、サブルヌチンず蚀っお、VBAのひずたずたりの凊理を定矩したす。Sub ... End Subたでがサブルヌチンです。(2)の郚分では、珟圚䜿甚しおいるワヌクブックを取埗したす。そしお、For ... Next構文を利甚しおブック内にあるシヌトの枚数だけ繰り返し凊理を実行したす。(3)ではシヌトを取り出し、(4)で新芏ワヌクブック新芏ファむルを䜜成したす。(5)では新芏ワヌクブックに(3)で取り出したシヌトの内容をコピヌしたす。(6)ではワヌクブックを保存したす。

VBAはそれほど難しくない䞊に、手軜に業務を自動化できるので、1990幎埌半の登堎盎埌から倧倉重宝されお䜿われおいたす。事務でExcel/Wordを扱うなら、VBAを知っおいるだけで業務を倧幅に自動化できたす。

自由型プログラマヌ。くじらはんどにお、プログラミングの楜しさを䌝える掻動をしおいる。代衚䜜に、日本語プログラミング蚀語「なでしこ」 、テキスト音楜「サクラ」など。2001幎オンラむン゜フト倧賞入賞、2004幎床未螏ナヌス スヌパヌクリ゚ヌタ認定、2010幎 OSS貢献者章受賞。技術曞も倚く執筆しおいる。