マクロで省力化?
【業務への活用】
Windows95の時代に、EXCEL97上で動くマクロの存在を知りました。しかも、Basic言語。期待して見てみると、コレクション、メソッド、イベント・・・。いきなり異次元の世界。新しいwindows時代のBasicはあまりに敷居が高く、強烈なインパクトを残し、私から立ち去ろうとした事を覚えています。が、それも『慣れ』なのかもしれません。当時はゴールの見えない『もの凄く高い山』をイメージしていましたが、登ってみると案外低いものです。しかも快適。メインが1で出力に9の時間をかけてプログラミングしていたMS-DOSの時代が嘘のようです。VBA (Visual Basic for Applications)の登場で自分のイメージどおりに簡単にソフトを作れる時代になりました。本サイトは、EXCELのVBAを少しでも多くの方が業務に活用し省力化のお役に立てるよう、その第一歩になれればと考えています。
マクロの作り方
ワークシートをコピーする操作の自動化マクロを作成します。
- メニューバーから[表示]⇒[ツールバー]⇒[Visual Basic]を選択します。
- [Visual Basic]ツールバーが表示されたらマクロの記録ボタンをクリックします。[マクロの記録]ダイアログボックスが表示されますので、そのまま[OK]ボタンをクリックします。
- メニューバーから[編集]⇒[シートの移動またはコピー]を選択します。
- [シートの移動またはコピー]ダイアログボックスが表示されますので、[コピーを作成する]チェックボックスをオンにして[OK]ボタンをクリックします。
- ワークシートがコピーされた事を確認してください。確認後、マクロの記録終了ボタンをクリックします。
- メニューバーから、[ツール]⇒[マクロ]⇒[Visual Basic Editor]を選択します。
- Visual Basic Editorが起動したら、プロジェクトエクスプローラから、[標準モジュール]⇒[Module1]を選択します。ここで、コードウィンドウを確認してください。この部分が記録されたマクロになります。
- コードウィンドウ内のマクロはSheet1をコピーしてSheet1の左側に表示させるというものです。
Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2011/1/30 ユーザー名 : ' ' Sheets("Sheet1").Copy Before:=Sheets(1) End Sub
これだと汎用性がありませんので下記のように書き換えます。アクティブシートをコピーしてアクティブシートの右側に表示させるというものです。SubからEnd Subをコピーして、コードウィンドウに貼り付けます。
Sub sheetcopy() ActiveSheet.Copy after:=ActiveSheet End Sub
- [Visual Basic]ツールバーのマクロの実行ボタンをクリックします。[マクロ]ダイアログボックスが表示されますので、ワークシートの[Sheet3]をアクティブにして[sheetcopy]を選択後[実行]ボタンをクリックします。
- アクティブシートの右側に[Sheet3(2)]としてアクティブシートがコピーされました。
このようにEXCELの操作をマクロに記録し編集を繰り返す事が、VBA (Visual Basic for Applications)を理解する近道ではないかと思います。今回のマクロは【簡単入力マクロ付き数量計算書ver1.12】の中にも組み込んでいますので併せてお試しください。