Mutable_Yunの業務改善ブログ

業務改善や生産性向上のブログです。自動化の手段として、VBAやRPAの勉強に役立つ解説をしています。

VBAの勉強

Excel VBA入門 本当のど初心者向け①とりあえず何か書いてみる

今回は本当のプログラミング初心者が業務効率化をExcel VBAで始める方法とその第一歩を踏み出すまでについて解説します。業務効率化ならExcel VBAから始めるのが最短 - Mutable_Yunの業務改善ブログで解説した通り、エクセルを多く利用している職場ではExcel…

元エンジニアが実践しているプログラミングのコメントの使い方をまねしたらすごかった

プログラミングの時にコメントを有効に使っていますか?私なりの方法をご紹介したいと思います。プログラミング教室に通ったりエンジニアとして就職した経験があるわけでは無いので、まだまだ使い方はあるかもしれませんが、そんなときはどうぞご教示下さい…

VBA OLEを使ってメールを配信する

何かデータをまとめたとき、次工程に渡す方法の一つとしてメール配信まで自動化できればいいな、と思ったことはありませんか?VBAではシートやエクセルと言ったエクセルアプリケーションが持つオブジェクト以外を操作することができます。今回はAPIという外…

VBA 誰でもできる上級者を突き抜けるオブジェクト指向の考え方

VBAで自動化ツールを作っていると、あまり難しいことを考えなくても作業を進めることができます。しかし、オブジェクト指向という考え方を頭の片隅におくと、プログラミングのレベルが上がると思います。初段~二段くらいになると思います。今回はオブジェク…

遅い、重いは勘違い。VBA はエクセルさんの気持ちになって高速化する

思えばエクセルさんは健気な存在です。遅いとか重いとか言われて。でも、それは普段エクセルを使う事務職で プログラミングを知らない人はそういうこと自体にあまり思いが至らないかもしれません。おそらく、エクセルやExcel VBAが遅いと言う人はコマンドラ…

VBAで複数のモジュールを使いこなす② イベント処理のためのシートモジュールとブックモジュール 

みなさんはシートモジュールやブックモジュールを使いこなすことはできていますか。今回はシートモジュール、ブックモジュールの意義とイベントプロシジャについて解説します。目次 シートモジュールとブックモジュールとは イベントとは よく使うイベントプ…

VBA エクセルブックを閉じる方法とその周辺

VBAでエクセルブックを開いたり閉じたりする検索があるので、解説したいと思います。 その時に色々と工夫すると使い勝手の良いツールとなりますので、単に閉じるだけでなく、一歩踏み込んだ操作まで頑張ってマスターしていきましょう。この記事は初級~中級…

VBAによる開発はとりあえず使ってもらえるものが簡単にできるからこそ、ユーザー受け入れテストと本番リリースをきっちり分ける

VBAによる開発は細かな要件定義などを省いてとりあえず核となる部分を作ってしまうのが最短です。そのあと、入力部分や出力部分を作成します。そして、とりあえずのものができたら人に使ってもらいましょう。するとフィードバックを得ることができます。その…

VBA 配列を徹底的に解説する (全5回) ⑤動的配列

VBA 配列を徹底的に解説するシリーズもいよいよ最終回です。本当は一つのブログで完結するのがいいとは思いますが、徹底的に解説する以上、10個くらいに分けざるを得ませんでした。ユーザビリティ・・・<これまでの配列の解説> VBA 配列を徹底的に解説する…

VBA 配列を徹底的に解説する (全5回) ④多次元配列

VBAで配列を徹底的に解説するシリーズ第4弾は多次元配列です。これまで見てきた配列では一階建てのアパートのように一列に並んだ部屋に値を格納していくイメージでした。これからは配列をより使いこなすためにアパートを二階建て、三階建てにしていきます。…

VBA 配列を徹底的に解説する (全5回) ③静的配列の初期化と実務的なサンプル

VBAにおける配列の3回目です。そろそろ静的配列のイメージが掴めてきたので、実務的なサンプルを考えていきます。実務的なコードを作成するために、今回は静的配列の初期化について解説します。この記事は中級です。 レベルについてはExcel VBAの実力(レベ…

VBA 配列を徹底的に解説する (全5回) ②静的配列

VBAの配列を徹底的に解説するシリーズの2回目です。配列を自由自在に使いこなせるようになると、一段レベルアップします。頑張っていきましょう。この記事は中級です。 レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照くだ…

VBA 配列を徹底的に解説する (全5回) ①イメージをつかむ

VBAを使い初めてしばらくはシート上の操作の自動化が主なので配列の必要性を感じないかもしれません。 しかし配列をマスターすると、高速化を図ったり、データを一つにまとめておいて一部を取り出すなどプログラミングの自由度が増し、とても便利になります…

VBA 自動化ツールの目的を深掘りして、完成度を高める②(入力データ/ユーザーインターフェース編)

自動化ツールの目的を深掘りする、の第2弾です。自動化ツールを作成するに当たり、その目的を深掘りすることによって完成度を高めることができる、と言う事をVBA 自動化ツールの目的を深掘りして、完成度を高める①(出力データ編)で解説しました。今回はそ…

VBA 自動化ツールの目的を深掘りして、完成度を高める①(出力データ編)

VBAで業務の自動化を進める際、これから着手するツールの役割を考えていますか。今回はより使い勝手のよいツールを開発するために、目的の深掘りをしてみましょう。 この記事はVBAレベル初級者~二段です。 レベルについてはExcel VBAの実力(レベル)を定義…

VBAで作ったマクロの高速化②改 内部的に開く、閉じる ⇒ 実務作業の具体的手順(csvファイルとして用意しておき、集約するという事前作業)

マクロの高速化において思い処理の一つにエクセルブックを開く作業と閉じる作業が挙げられます。 VBAで自動化する業務はほとんど全て入力データがあり、何かしらの加工を行った上で保存して閉じるという作業である以上、ブックを開いたり閉じたりする作業は…

VBA 動的二次元配列を実務で使う :行方向に要素を追加したいときは、最後に縦横変換する

配列は有効に使いこなせていますか。 以前、 VBAで作ったマクロの高速化① 配列を使うで、セルへの書き込み時間短縮のためには配列を利用するのが効果的である、と言う話をしました。今回は転記したい範囲が予めわからない場合の対応について考えていきたいと…

VBA 既存のツールのプログラムコードを見直す

ツールを一度リリースしたらもう終わりになっていませんか。完成したツールを後から見直すと色々と気づきがあるものです。 今回はプログラムのユーザーからみた挙動を変えずにコードを書き直すリファクタリングについて見ていきます。 プログラムコードはど…

VBA 使い勝手の良いツールを作るコツと、人間力とスキルのダブル成長

せっかく覚えたVBAで自分だけの便利ツールを作ってうまくいくと嬉しいと思います。そのうち周りの人に使ってもらいたいとか、何か便利ツールを作ってあげたいと思うようになってきた人もいるのではないでしょうか。今回はVBAで自分だけ効率化している状態か…

VBA DateSerial関数とバブルソートを使ってシートを古い順に並び替える

一見自動化が難しそうな処理があると、VBAで自動化をするのを諦めていませんか?今回は一工夫することで解決する実例を見ていきます。大抵のことはできますよ! この記事は中級~上級です。 レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者…

VBA フォルダの中をループで検索して、きょうの日付のファイルを開く

フォルダ内のファイルをループで検索する方法を使っていますか? 便利な方法なので、使い方と使いどころをマスターしましょう。今回のレベルは中級です。 レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。 目次 今…

VBAで複数のモジュールを使いこなす① 標準モジュールを使う

みなさんはVBAを使う時、モジュールを使いこなせているでしょうか。VBAでは複数のモジュールの種類が存在し、それぞれが複数のモジュールを持つことができます。しかし、それを使いこなせている人は多くないかもしれません。私もVBAを勉強し初めた頃は標準モ…

VBAのクラスを使う② ユーザーが選択したファイルを開く実務的なオブジェクトを生成する

今回はVBAのクラスを使って実務的な機能の実装を試みます。 そもそもクラスやオブジェクトの概念がよくわからない方は、VBAのクラスを使う① クラスを使うためのオブジェクトとメソッドの前提知識をご参照ください。この記事は初段です。 レベルについてはExc…

VBAのクラスを使う① クラスを使うためのオブジェクトとメソッドの前提知識

VBAはクラスをきちんと理解しなくても、かなりの自動化ができます。そのため、初心者にやさしい一方で、クラスの必要性を感じないため、きちんと分かっていない人も多いのではないでしょうか。私は長い間VBAのクラスモジュールを使わずに自動化ツールを作成…

VBAで作ったマクロの高速化② 内部的に開く、閉じる(失敗⇒元データをテキスト(タブ区切り)で保存しておく)

~~~初めに(2019/10/11追記)~~~ この記事はうまくいかない方法について実験した結果を解説しています。この記事だけでは遅いマクロを早くしたい、という課題は解決しません。解決策については、 VBAで作ったマクロの高速化②改 内部的に開く、閉じる ⇒ 実務作…

VBA 配列を使うことによってFunctionプロシジャで複数の戻り値を返す

VBAのFunctionプロシジャは一つの戻り値しか返せません。しかし、2つ以上の戻り値を受け取りたいときがあります。例として何度もVLOOKUPする事を考えます。 ここに商品リストがあります。商品リスト 次に、売上実績データがあります。普段基幹システム内で取…

VBAのコーディングで自分なりのルールを作る 自分だけのコーディング規約のメリット3つ

VBAで自動化のツールを作る時、変数名を決めるときに迷ったり、途中で中断したときにどこから作業再開するか探すのに手間取ったりしたことはありませんか。今回は自分なりのルールを作る事でこういった手間を防ぎ、プログラミング作業を効率化する方法を私の…

VBAで作ったマクロの高速化① 配列を使う

せっかくエクセル作業の自動化プログラムを作ったのに、実務で使ってみたら思ったより時間がかかったり、画面が白くなって強制終了したりしたことはありませんか。私はあります。それでも手作業よりは早いので、初めて私のツールを使ってくれた人は満足です…

VBA Functionプロシジャの使いどころ / 自分独自の関数を作る

エクセルにはSUMやVLOOKUP、SUBTOTALといった便利な関数が多数存在しています。 それらを有効活用するのも大事ですが、独自の関数を作りたくありませんか?VBAには自分だけの独自の関数を作る機能があり、それをFunctionプロシジャと呼びます。自分だけの独…

CallステートメントでVBAのプログラミングを効率化する

日々VBAで自動化ツールを作成していると、プログラミング自体を効率化したくなってきます。 手っ取り早いのが過去の資産の流用です。例えば、入力するcsvファイルやエクセルファイルをユーザーに選択させる、というのは毎回似たようなコードです。その部分を…