オフィスで必ず使うソフトと言えばエクセルとワードではないでしょうか。
特にエクセルは見積書や請求書、簡単な案内チラシのようなものまで表計算ソフトの用途を超えて使われています。
このエクセルの中にマクロという機能がありますが、マクロの言語がVBAです。
VBAを理解しておくと就職で有利になることがあるので覚えておいて損はないスキルです。
VBAを使うと時間短縮ができるので早く仕事が終わる!
マイクロソフトのoffice製品上で動き、ワードやアクセスでも使えますが、VBAを知って一番効率的になるのがエクセルです。
VBAを使って主になにができるかというと、表計算を行う際に、無駄な手順をふむことなく、ボタン一発で実行することができるようになります。
実際の例から、どのように短縮できるかを見てみましょう。
よく使うエクセルの操作
エクセルでよく使う操作として2点挙げてみました。
・オートフィルター機能を使ってフィルタリングをした上でデータを確認
・エクセルのデータからPDFを出力
具体的にはどのような操作をするかくわしくみていきます。
オートフィルター機能 を使ったフィルタリング
VBAを使わない場合の手順
単純な手順だけでも、
1.領域を選択する
2.オートフィルターボタンを押してフィルター機能を使う
3.項目から必要な情報を選択して表示されるものをフィルタリングする
簡単なデータのフィルタリングであれば3手順で確認することができます。
しかし、3の手順でフィルタリング項目が多くなるとすごく手間がかかります。
たとえば、顧客情報の一覧があるとして埼玉県に住んでいる30代女性のみを抽出する場合、
・都道府県で埼玉県を指定
・年代で30代を指定
・性別で女性を指定
最初の3手順からどんどん手順が多くなっていきます。
目視で男性と女性を比較する場合などは切り替えが面倒です。
VBAを使ってボタン一発で解決
1.開発タブ > 挿入 > フォームコントロール の項目からボタンを作成します。
※事前に開発タブを表示させておく必要があります。
2.下記のコードをボタンへ割り当てます。
1 2 3 4 5 6 7 8 9 10 | Subfilter_on() ActiveSheet.Range("A2").AutoFilterfield:=2,Criteria1:="女" ActiveSheet.Range("A2").AutoFilterfield:=3,Criteria1:=">=30",_ Operator:=xlAnd,Criteria2:="<40" ActiveSheet.Range("A2").AutoFilterfield:=6,Criteria1:="埼玉県" EndSub Subfilter_off() ActiveSheet.AutoFilterMode=False EndSub |
filter_on と filter_off は関数となっていますのでそれぞれをボタンへ適用することができます。
【filter_onの関数説明】
2行目: ActiveSheet.Range(“A2″).AutoFilter field:=2, Criteria1:=”女”
説明 : A2のセルからオートフィルターを掛けてフィールド(列)2つ目の値を女だけを抽出する。
3行目~4行目、5行目も条件を追加しているだけのプログラムです。
【filter_offの関数説明】
フィルターを解除します
サンプルファイルを置いておくので使ってみてください。
個人情報は下記のダミー情報です
http://kazina.com/dummy/index.html
======
テンプレを使いました。
http://template.the-board.jp/estimate_templates/article/estimate_template_001
PDFの出力
VBAを使わない時の手順
単純な手順で、
1.印刷範囲を指定する
2.名前を付けて保存からPDF出力を行う
3.PDF名がエクセルのファイル名なので修正する
操作としては単純なのですが、毎回ファイル名を変更しなければならないのは面倒です。
入力しているデータからファイル名を自動取得できるようにしてみましょう。
VBAを使ってボタン一発で解決
フィルターの時と同様にボタンにプログラムを割り当てます。
1 2 3 4 5 6 7 | SuboutputPDF() DimnameAsString DimFnameAsString name=Range("A3")&"_"&Range("N3") Fname=ThisWorkbook.Path&"\" & name & ".pdf" ActiveSheet.ExportAsFixedFormatType:=xlTypePDF,fileName:=Fname EndSub |
4行目:name = Range(“A3”) & “_” & Range(“N3”)
説明 :ファイル名をセルA3 と セルN3 の値を アンダーバーでつないだものにしています。
5行目:Fname = ThisWorkbook.Path & “\” & name & “.pdf”
説明 :出力するファイルの場所とファイル名をFnameという変数に入れています。現在はエクセルファイルと同じ場所にPDFが出力されます。
6行目:ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=Fname
説明 :Fnameで指定した場所へ、指定したファイル名のPDFを出力します。
こちらの便利なところは、宛先企業名と見積No.から自動でファイル名を作れるようにしているところです。
ファイル名の変更は地味な作業なので単純なミスをする可能性が高くなるのです。
上記のミスをプログラムを使って回避しつつ、時間短縮を行っていますね。
VBAはボタン一発でいろいろなことができる
あなたがエクセルで行っていた面倒くさい作業は、ほぼ一発でVBAで行うことができます。
VBAはプログラム言語ですので、エクセル関数で実現できなかったことも行えます。
今回ご紹介したプログラム2点についてもカスタマイズの余地はたくさんあると思います。
フィルターの条件を複数のボタンへ割り当ててすぐに切り替えできるようにしたり、複数シートの場合でもPDFで出力できるようにしたり、アイデア次第でいくらでも広がりますね。
便利なので、この機会に調べてみると面白いかもしれませんよ。