サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
www.mutable.work
せっかくエクセル作業の自動化プログラムを作ったのに、実務で使ってみたら思ったより時間がかかったなんてことはありませんか?今回はVBAで作ったマクロの高速化の手段として配列を使う方法を紹介します。 目次 配列を使ってVBAの実行を高速化する セルの書き込みに時間が掛かる例 配列を使ってセルへの書き込み回数を1回にする 配列とは 配列を使った高速の具体的なサンプル VBAが遅いのではなく、エクセルが重い 配列を使った高速化のまとめ 配列を使ってVBAの実行を高速化する VBAで作成したマクロの処理に時間が掛かる理由は大きく分けて2つあります。 セルの書き込みに時間がかかる 繰り返すことを繰り返していて、トータルでみると何百万回も計算している 今回は前者の対策をします。 セルの書き込みに時間が掛かる例 大量のセルに書き込みを行うと処理に時間が掛かります。事件してみます。下のプログラムを実行すると
需要予測と需要実績の差に着目した安全在庫の算出方法を解説します。この記事は在庫管理・発注業務を担当している方で、標準偏差と安全係数を用いた従来の安全在庫設定が大きすぎると感じている方を読者に想定しています。 目次 予測誤差に基づく安全在庫の算出方法 予測誤差の概念 安全在庫の概念 予測誤差に基づく安全在庫の概念 どうやって需要予測の精度を評価するのか 需要予測の精度を評価するには予測誤差のバラつきという概念を使う 予測誤差のバラつきを計算する 求めた予測誤差に基づく標準偏差をもとに安全在庫数を計算する エクセルで出力する 予測誤差に基づく安全在庫の算出方法まとめ 予測誤差に基づく安全在庫の算出方法 この記事ではまず、予測誤差とは何を指すのかを明確にした上で、安全在庫の概念について認識を揃えます。その後、安全在庫の具体的な計算方法と、実務で使えるエクセルの設計までを解説します。なお、従来の安
Pythonでファイルを取り扱うのに便利なos.pathモジュールを解説します。この記事は os.path --- 共通のパス名操作 — Python 3.8.1 ドキュメントを参考に作成しました。 目次 os.pathモジュールを使ってファイルやフォルダを取り扱う os.path.join()で区切り文字を補完してパスを作成する os.path.join()の具体例 os.path.join()の注意点 os.path.dirname()でディレクトリ名を取得する os.path.dirname()の具体例 os.path.basename() os.path.basename()の具体例 .dirnameと.basenameを組み合わせて使う os.pathを使ったファイルの取り扱いまとめ os.pathモジュールを使ってファイルやフォルダを取り扱う os.pathモジュールはファイル
VBAのプログラミングで上級者から初段にステップアップする為のシリーズの3回目です。今回はメンテナンス性と開発効率を上げるのに役立つ、変数名やプロシジャ名の付け方について解説します。 この記事は上級です。 レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。 目次 名前の付け方にルールを作る方法 ルールを作るメリット ルール自体は何でもいいがある程度の一貫性を持たせる ルールの付け方の例 日本語の例 日本語の変数名の例 日本語のモジュール名の例 日本語のSubプロシジャ名の例 日本語のFunctionプロシジャ名 日本語のクラス名 英語の例 英語の変数名の例 英語のプロシジャ名の例 ちなみに・・・エクセルの流儀はキャメルケース 命名規則(ルール)の作り方まとめ 名前の付け方にルールを作る方法 今までは変数名やプロシジャ名の付け方に特にこだわってき
今回はVBAのクラスを使って実務的な機能の実装を試みます。そもそもクラスやオブジェクト、メソッドと言う概念がよくわからない方は、VBAのクラスを使う① クラスを使うためのオブジェクトとメソッドの前提知識をご参照ください。概念をしっかり理解した上で具体的な処理を学ぶ事で理解を定着させることができます。 目次 クラスからオブジェクトを生成するして使う手順 どういうオブジェクトを作るか考える クラスモジュールでクラスを実装する 標準モジュールでクラスからオブジェクトを生成する 手順まとめ クラスからオブジェクトを生成するして使う手順 VBAでクラスを利用するには、下記のステップを踏みます。 どのような機能をもったクラスを作るか考える クラスモジュールにメソッドを記述する 標準モジュールのSubプロシジャから呼び出して使う 順に解説していきます。 どういうオブジェクトを作るか考える クラスの有効な
Excel VBAでシート内を検索する方法を単刀直入に解説します。検索した結果を別シートに転記します。 目次 For~Nextステートメントでループして検索する 一致したら転記する 含んでいたら転記する 条件が合えば転記する Kindle Unlimitedは読み放題! For~Nextステートメントでループして検索する 検索するにはループで繰り返し値が条件に一致するかを確認します。今回は別シートに転記する事にします。 サンプルデータはこのようなものです。 店舗ID、地域、業態の一覧表 図は多店舗展開している飲食業の店舗一覧のイメージです。A列に店舗ID、B列に地域、C列に業態が記入されています。これが100行までデータが存在します。 データ最終行とシート名 一致したら転記する 検索は繰り返し構文でループして値を確認し、条件に一致したものを抽出する、というパターンと決まっています。 まずは
生産性向上や業務改善、自動化が叫ばれて久しくなりました。自動化による業務効率化を進めるのであればExcel VBA がオススメです。今回はその理由を説明していきます。 <2019/11/12 「RPAよりVBAが先」を追加しました。最も大きいメリットかと思います> 目次 業務の自動化はExcel VBAから始める 1.エクセルが身近なので学びやすい 2.エクセルの機能に詳しくなる 3.プログラミング的な考え方が身につく 4.作業の品質が安定する 5.他のプログラミング言語を学ぶ時の足がかりになる 6.業務の本質が分かる 7.周囲を幸せにし、自分も幸せになる 8.RPAよりExcel VBAが先(圧倒的コストパフォーマンスと低学習コスト) 9.暗黙のノウハウが見える化される 10.素早い開発に向いている 業務の自動化はExcel VBAから始める エクセルは見積もり、得意先の管理、受注履歴、
VBAの配列は有効に使いこなせていますか?セルへの書き込みによるマクロの実行時間を削減するには、配列を利用するのが効果的です。詳しくは VBAで作ったマクロの高速化① 配列を使うで解説しています。 今回は転記したい範囲が予めわからない場合の対応方法を解説します。具体的には動的配列を使う方法を説明します。 目次 動的二次元配列を行方向に要素を追加したいときの解決策 動的二次元配列とは 動的二次元配列の宣言と要素数の変更 サンプルで実務的な内容の実装 配列を縦横変換する VBA動的2次元配列で行方向に洋装を追加したい時の方法まとめ Kindle Unlimitedは読み放題! 動的二次元配列を行方向に要素を追加したいときの解決策 動的二次元配列とは 動的二次元配列と言うと名前が難しそうですが、名前ほど難しくありません。配列の要素数が動的に変わることを前提とした二次元の配列と言うだけです。動的と
VBAによる自動化で時間が掛かる処理の一つにエクセルブックを開く作業と閉じる作業が挙げられます。VBAで自動化する業務はほとんど全て入力データがあり、何かしらの加工を行った上で保存して閉じるという作業である以上、ブックを開いたり閉じたりする作業は避けられません。今回はその部分の高速化を図りたいと思います。 VBAで作ったマクロの高速化② 内部的に開く、閉じる ではエクセルブックそのものは内部的に開く処理をできないことを解説しました。つまり、エクセルファイルを開いたり閉じたりする事自体を高速化することはできません。 そこで、今回は同じ内容をcsvファイルとして保存しておき、それを取り込む具体的なコードを見ていきたいと思います。 このコンテンツは中級~上級です。 レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。 目次 VBAで作ったマクロの高速化
<分かりやすいように文言修正&誤字修正&脚注追加 2019/11/02> VBAで上級者から初段にステップアップするシリーズの2回目です。初段から二段へのステップアップも視野に入れて、コーディングの流れを意識したプログラミングを身に付けていきましょう。 この記事は上級です。 レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。 目次 標準モジュールの役割と理想的な処理の流れ モジュールの種類の整理 シートモジュールとブックモジュール フォームモジュール クラスモジュール 標準モジュール 標準モジュールで処理の流れを制御する 具体的な標準モジュールの作成方法 まとめ 標準モジュールの役割と理想的な処理の流れ モジュールの種類の整理 上級者になって今更かよ、と思うかもしれませんが、まずはモジュールの種類と役割をおさらいしていきましょう。これまでお世話
VBAの勉強でレベルアップするシリーズの二段から三段へのステップアップする手順を解説します。これまでの処理はエクセルの内部だけで処理が完結していました。これからはOutlookやInternet Explorerと言ったExcel以外のアプリケーションを操作する事を目指します。 エクセルの処理だけでもかなりの自動化ができましたが、できることがグッと増えていきますよ。 この記事は二段です。 レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。 目次 二段と三段の違いは何か OLEを確実に身に付ける勉強方法 3つの手順 外部のアプリケーションを動かすにはどうすれば良いのかを知る 何でもいいのでOLEで何か一つ作ってみる OLEのクラス名やプロパティ、メソッドの調べ方を知る 二段と三段の違いは何か 二段と三段の違いは何かというと、Excel VBAでエ
プログラミング未経験でエクセルVBAに興味を持たれている方に向けて、エクセルVBAでできることを紹介します。自分が勉強しようとしているプログラミング言語がどこまでのポテンシャルを秘めているかを知り、作りたいもののイメージや目的意識を持つことはプログラミング習得にとても効果的です。 目次 エクセルVBAでできること エクセルVBAでできることの概要 ツールとシステムの違い 自動化ツール 請求書発行ツール Webスクレイピングツール メール自動配信ツール パワーポイント会議資料更新ツール 受注集計ツール 顧客データ入力チェックツール 業務システム データベースへのアクセス機能を持つ販売管理システム その他のプログラム ゲーム 楽器 エクセルVBAでできる事の限界 クロスプラットフォームではない 高速処理は苦手 エクセルVBAの短所 エクセルVBAの長所 開発環境の構築が不要もしくはめちゃくちゃ
今回はVBAによるプログラミングの実力(レベル)を定義したい思います。 ネットでの質問などを見ると多くの人が「初心者です」と自称しており、本当の初心者が自信をなくしてしまうのでは無いか、と懸念しています。初心者の称号がインフレし、実際の実力がデフレを起こしているのです。これではいつまでたっても「初心者」です。 そこで、VBAプログラミングの実力を相対評価では無く絶対評価で定義してみたいと思います。 目次 入門者 初心者 初級者 中級者 上級者 初段 二段 三段 五段以上 以下、定義というより特徴や説明になってしまっていますが、わかりやすさを優先して進めていきたいと思います。各ステージで次に取り組むべき事も紹介していきます。 入門者 【定義】 これから勉強しようと思っている方。 【傾向】 この記事を読んでいる方は入門者以上がすでに確定です。やる気がある人とあるフリをする人の2つに分かれます。
VBAにおけるプログラミングでツールやシステムの開発効率を上げる、簡単な方法を紹介します。 この記事はVBAを勉強している全てのレベルの方が対象です。 レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。 目次 開発効率を上げるとはどういうことか 開発効率を上げる5つの方法 開発時間を短縮する系 自動構文チェックを外す 機能ごとにコードをスニペットにする 手戻りを防ぐ為に要件を簡単にまとめておく 仕様の決定方法をパターン化する コメントアウトを有効活用する おまけ クラスモジュールをエクスポートして使い廻す 開発効率を上げるとはどういうことか 開発効率を上げると言うことはどういうことかというと、ツールやシステムを作る時、リリースするまでに掛かる時間を短縮すると言う事です。軸としては時間そのものを短縮していく方向性と手戻りを防ぐ方向性があります。い
今回はVBAで業務自動化を目指す非エンジニア会社員向けに、VBAで開発をする際に用意しておきたいチェックリストについて解説します。 目次 チェックリストがリリース前のテストを有意義にする チェックリストとはリリース時のテストに使うToDoリスト テストとチェクリストの目的 リリース前のテストはユーザー側と合意しておく チェックリストはユーザーと一緒に作る 私の悲しい経験:チェックリストや要求仕様書を作らなかった末路 まとめ チェックリストがリリース前のテストを有意義にする VBAで自動化ツールを開発をしていると、いつかエクセルマクロブックを人に渡すときが来ます。リリースの瞬間です。このリリースのきっかけを曖昧にしていませんか?プログラミングが完了したら渡すだけになっていませんか。 リリースをきっちり行わないと、「こんな筈じゃなかった」とか「いまいち信用できなくて使っていない」とか「前に一度
この記事は非エンジニアの会社員で現業を持ちながらVBAでたまに自動化ツールを作っているというような方を読者として想定しています。 目次 非エンジニアに必要な開発ドキュメント3つのうちの要求仕様書 要求仕様書とは VBA開発に詳細な要求仕様書はいらない 要求仕様書の目的を意識する 要するに何が必要なのかを記述する VBA開発における要求仕様書の作成手順 非エンジニアに必要な開発ドキュメント3つのうちの要求仕様書 会社員がVBAで自動化するのに必要な開発ドキュメント3点で解説した通り、非エンジニアがVBAで他人が使うことを全停止としたツールを開発をするには要求仕様書、仕様書、チェックリストの3つの開発ドキュメントを用意すべきです。 今回はそのうち、要求仕様書について解説します。 要求仕様書とは 要求仕様書とはユーザーがソフトに要求する機能を記した開発ドキュメントです。細かく言えば要求仕様書の中
VBAで自動化ツールを作る際の手順をルーチン化しておけば、開発の効率を高めることができます。今回は開発効率を高めるための手順をまとめます。 目次 開発効率を高めるためには開発手順をルーチン化する 結論:具体的な手順 概要書受領 要求仕様書を共同で仮作成(完璧を目指さない) 操作画面や機能面の深堀りするためのPoC 要求仕様書を共同で修正 リリース前のチェックリストを作成 プログラミング着手 コアな部分が一通りできたらレビュー 機能の追加、修正を行い、必要なら要求仕様書に反映 プログラミング再開 リリース前テスト リリース 開発効率を高めるためには開発手順をルーチン化する 自動化ツールに限らず、効率化の要諦はルーチン化にあります。毎回同じ手順で開発ができれば、それだけで開発効率があがりますし、さらに手戻りに強い手順でルーチン化できれば、よりよい効率化を図ることができます。 それでは早速、VB
VBAは自動化やデータのチェックといった業務改善ツールを、非エンジニアでも簡単に開発することができる便利なプログラミング言語です。非エンジニアの事務職にとっても取り組みやすく非常にありがたい存在です。VBAでエクセル作業を自動化する事は作業時間の短縮だけでなく、作業品質の安定化にもつながります。今回は、その死角なしに見えるVBAによるツール開発の弱点、属人化への対応方法を解説します。 目次 VBAの弱点、属人化に打ち勝つ VBAは事務職が自己啓発程度の勉強で十分身に付けられるプログラミング言語 ちょっとした便利ツールを気軽に作れると言うメリット 気軽に開発できるからこそ陥るデメリット プログラミング入門書に書かれていない大切なこと 属人化に打ち勝つ方法 複数の開発者を育成する 開発ドキュメントをそろてプログラムの中身を明確にする VBA 属人化への対応方法まとめ VBAの弱点、属人化に打ち
今回は非エンジニアの会社員がVBAで自動化ツールを作成する時に必要な開発ドキュメントについて解説します。この記事はエンジニアではないフツウのサラリーマンを読者として想定しています。 目次 開発ドキュメントとは 非エンジニアが便利ツールを作るのに必要な開発ドキュメントは3つだけ 要求仕様書 仕様書 チェックリスト 3つのドキュメントを用意すべき理由 「思っていたのと違う」を防ぐ 開発の手戻りを防ぐ メンテナンス性と再現性を持たせる 必要に応じて作成する運用手順書 まとめ 開発ドキュメントとは 開発ドキュメントとは何かのソフトを作成する時に作成するドキュメントです。どのような機能があって、どんな風に操作するソフト、というようにそのソフトについて書いてあるのが開発ドキュメントです。 非エンジニアが便利ツールを作るのに必要な開発ドキュメントは3つだけ 早速用意すべき開発ドキュメントがどのようなもの
業務効率の改善や作業の品質向上の観点から自動化を推してきました。そして、非エンジニアの事務職が取り組めるプログラミング言語としてVBAをオススメしています。外注するのではなく、自分自身でツールを開発するからこそ自分好みの自動化が自由自在だからです。 一方で、VBAによるマクロを嫌う人がいるのも事実です。それは作業がブラックボックス化して業務の内容が分からなくなったり、業務内容に変更があったときにメンテナンスができなくなったりする可能性があるからです。まさにVBAによる自作ツールの弱点を的確に突いた指摘です。これは自分好みの自動化が自由自在に気軽にできる事の裏返しと言えます。 個人的に日々の業務をちょっと便利にすると言った程度の使い方であれば、業務を引き継ぐ時にあえて自動化したマクロツールを渡さないと言う手があります。しかし,実際は便利な自動化ツールがあるとついそれを使って引き継ぐ方が楽であ
プログラミングと言えばコンピュータが動作する指示を人間が分かる様にしたプログラミング言語を使って記述することです。ここでは業務改善のための道具という立場から見たプログラミングを解説します。 目次 業務改善のためのプログラミング かなりいろいろな事ができる プログラミングは地道な作業 業務改善におけるプログラミングのまとめ 業務改善のためのプログラミング 早速プログラミングという作業を業務改善の立場から見てみましょう。ここで言うプログラムとはVBAやPythonのようなスクリプト言語を使って自動化ツールや特定の目的を達成する事ができるシステムの一部*1を作る事を指します。目的は業務改善です。 ゲームや基幹システムを作るようなプロのエンジニアが取り扱うプログラミングとはニュアンスが異なります。エンジニアが開発するプログラムは厳密な要件定義を必要とし、また、チームを組んで開発します。このような点
Python作ったツールを気軽に誰にでも利用してもらえるようにexeファイルにして、ダブルクリックするだけで起動できるようにする方法を解説します。 目次 Python プログラムをexe化する方法 exe化する方法の概要 PyWin32のダウンロード~インストール PyWin32のダウンロード PyWin32のインストール PyInstallerのダウンロード~インストール PyInstallerのダウンロード PyInstalerのgzファイルの解凍 PyInstallerのインストール exeファイルにする Python プログラムをexe化する方法まとめ Python プログラムをexe化する方法 Pythonで書いたスクリプトをコマンドラインから実行する為にはPythonがインストールされていなければなりません。それではせっかくの自動化プログラムも配布できないですよね。早速exeフ
別の.pyファイルに保存したスクリプトを呼び出す方法とその意義を解説します。まず、その意義からから始めます。 目次 別ファイルの.pyスクリプトを呼び出す pyファイルを呼び出して実行する意義 オブジェクト指向という考え方 pyファイルを呼び出して実行する方法 スクリプトごと呼び出して実行する pyファイル内にある関数を呼び出す .pyスクリプトを呼び出す方法とその意義まとめ Kindle Unlimitedは読み放題! 別ファイルの.pyスクリプトを呼び出す Pypthonのスクリプトを実行するにはコマンドラインにPythonコードを書いて対話的に実行する方法と.pyと言う拡張子を持ったバイナリファイル*1を実行する方法の2つが存在します。今回は.pyファイルに記述されたスクリプトを実行する方法とその意義を解説します。 pyファイルを呼び出して実行する意義 Pythonで別ファイルの内容
今回はVBAでSharepoint上にファイルをアップロードする方法を解説します。 目次 VBAでSharePointにファイルをアップロードする方法 Sharepoint(シェアポイント)とは サンプルコード 内容の解説 VBAでSharePointにアップロードする方法のまとめ VBAでSharePointにファイルをアップロードする方法 Sharepoint(シェアポイント)とは Sharepoint(シェアポイント)とはマイクロソフトが提供している情報共有アプリです。インターネットを閲覧するためのブラウザを利用します。インターネット上にドキュメントライブラリというようなデータを保存しておく場所があり、そこにデータをアップロードすることで、仲間とデータを共有することができます。 サンプルコード サンプルコードは下記の通りです。 Sub SaveAtSharepoint() Dim u
VBAで便利なMsgBox関数があります。私の身近にMsgBoxを関数ではなくメソッドだと思っている人がいたので要点を簡潔に解説します。 目次 「関数」とは何かについての認識を合わせておく そもそもメソッドなら、オブジェクトにくっついていないとおかしい MsgBoxにカッコをつける場合とつけない場合 カッコをつけないとエラーになる場合 カッコをつければ戻り値を受け取らなくてもエラーにはならない MsgBoxの戻り値を確かめる まとめ 「関数」とは何かについての認識を合わせておく VBAにおける関数は何かの入力値に対して、値を返すものです。VBAの場合、関数といえばSum関数のように、引数に対して何らかの値を返す、一つの構文です。 そもそもメソッドなら、オブジェクトにくっついていないとおかしい 私の身近にいる人でMsgBoxをメソッドだと思っていた人は、下の例のように戻り値を受け取らないMs
このページを最初にブックマークしてみませんか?
『www.mutable.work』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く