コピー2018.08.14みなさん、こんにちは!フジタニ(@libartweb)です。エクセルVBAで自動化されている業務。自動化されているのに、エクセルVBAの操作誤りなどでオペレーションミス多発・・・ケアレスミスで重大な顧客クレームに繋がったり。そんな状態が続けば、ミスは減りませんし、顧客満足度も低下の一方です。視点を変えてエクセルVBAに一工夫を加えるだけで小さなミスは大幅に減らすことが可能です。実はすごくカンタンなチェック機能を追加するだけだったりします。今回は、そういった工夫などを取り入れ、人為的な運用ミスを減らす4つの方法を紹介します。業務でエクセルVBAを実際に運用されている方は必見です!目次エクセルVBAを使用した運用で発生する人為的ミス人為的なミスを減らす4つの方法シートを保護する人の誤操作をプログラムが検知するインポートするファイルが正しいかどうかをチェックするファイルを自動的に選択するまとめエクセルVBAを使用した運用で発生する人為的ミス自動化していても、その中で手作業はどうしても発生します。エクセルVBAの実行ボタンを押す、ファイルを選択する、ブックを開くなど...どんなに小さな動作であっても、人が操作する以上、それは「人為的な作業」です。人が入るとそこには必ずミスが発生します。ミスが発生する前提で、それを防ぐにはどうすればいいか?を常に考えること。処理の機能だけをエクセルVBAに記述するのではなく、ミスを減らすための記述も行うこと。以上を意識するだけで大幅に人為的ミスを減らすことができます。「工夫する」という意識が常に必要となってきます。人為的なミスを減らす4つの方法では具体的に、どのような実装ができるのか?今回は4つの方法とその例を紹介します。今回紹介する内容から様々な改善のアイデアに繋がればと思います。シートを保護する例:シートの保護を活用し、誤入力を防ぐエクセルVBAで使用するデータは当然エクセル上に保存されている場合が多いです。エクセルVBAのブックと同一ブック内にプログラムで使用するシート(データ)があった場合、何らかの拍子に意図せず人が編集してしまう恐れがあります。なると、誤った処理結果が出力される原因となります。編集されたくないシートは保護をかけておきましょう!保護はカンタン。1保護したいシートを右クリック2「シートの保護」を左クリックこれだけです!エクセルVBAで保護したシートを編集したい場合しかし、保護したシートをエクセルVBAが編集をかける場合、保護したままだとエラーになってしまいます。エクセルVBAでシートの保護と解除ができます。SubProtectメソッドとUnprotectメソッドを使ってシートの保護と保護の解除ができます。ユーザに操作を求めずにシートの保護と解除を自動で行うことができます。シート内のデータをユーザが誤って編集しちゃうこともなくなりますね。以下の記事でProtectメソッドとUnprotectメソッドについて説明しております。【エクセルVBA】Protect/Unprotectメソッドでシートの保護設定と解除をする方法ProtectメソッドとUnprotectメソッドを使って、VBAでシートの保護を設定したり、解除したりする方法をご紹介しています。VBAで作成したレポートを変更させたくない!という時にこのメソッドを加えておけば、シートの保護までVBAがやってくれますよ。シートの保護を忘れずに設定したい!という時におすすめです。以上の処理があったと仮定します。今回は15日締処理なのに、末日締のボタンを押してしまったら問題です。エクセルVBAは日付を判定できますから、間違って押してしまっても気づけるようにすれば良いのです。hh:mm:ss)で返します。Date型は時間まで返してしまいますから特定の値を指定した書式に変換するFormat関数を使います。書式)Format関数でDate関数で取得したシステム日付を”dd”に変換。Format関数の使い方の詳細は下記をご覧ください。【初心者向けエクセルVBA】文字列の連結&Format関数での書式変更エクセルVBAで文字列を連結する、文字列の書式を変更するなどの「文字列」に関するいくつかのテクニックを紹介しつつ、データ一覧から請求書を自動で作成するというシリーズ連載の序盤の完成を目指します。tonari-it.com2015.05.21ボタンを押されたタイミングが、想定されたタイミングではない場合にメッセージを出力します。このようにメッセージを出してあげることでミスの半分以上は防ぐことができます。インポートするファイルが正しいかどうかをチェックする人の目では気づけない部分もあります。できる限り自動的にファイルの異常に気づける仕組みを取り入れましょう。例:エクセルVBAでインポートするファイルが古いものでないかチェックする他のシステムから吐き出した「本日分」のxlsxファイルやcsvファイルをインポートするエクセルVBAがあります。ファイル名がいつも一緒なので、手作業でファイルを指定すると、うっかり前日以前のものをインポートしてしまうというミスが発生することがあります。それを防ぐために、「ファイルの更新日」をチェックして、更新日が「本日」の日付じゃない(古い)場合にメッセージを出力します。以下サンプルコードです。'Format関数で、比較対象を年月日のみにします。"の更新日が異常です。"C:\vba\sample.csv"'ファイルの更新日が、システム日付と一致するかをチェックする'Format関数で、比較対象を年月日のみにします。"の更新日が異常です。Subファイル更新日時を調べるには以下の関数を使用します。hh:mm:ss)で返します。これをDate関数と比較することで、ファイルの作成(更新)日時とシステム日付が一致しているか?をチェックすることができます。”yyyymmdd”に変換。それぞれを同じ書式で比較できるようにしています。ファイルを自動的に選択するファイル名に規則性があるのに、ファイルを手動選択させる運用をしていませんか?ファイル名に規則性がある場合はエクセルVBAでファイルの自動選択が可能です。Subサンプルコードは本当にそのファイルパスで正しいか?を確認するメッセージボックスを出力して、正しければ処理続行。間違っていたらファイル選択ダイアログを表示して、変数filePathの中身を更新する、という処理です。前提条件はインポートするファイル名に規則性があることです。規則性があれば、今回の記事で紹介しているDate関数などを駆使して自動的にファイルを選択する機能を追加することができます。「人にできる限り操作をさせない」ことが、ミス削減に繋がります。サンプルコードで使用しているDir関数とファイル選択ダイアログの説明は下記記事をご覧ください。エクセルVBAでFileDialogオブジェクトを使ってファイル選択ダイアログを開くエクセルVBAでファイルを開く作業を自動化する方法についてシリーズでお伝えしています。今回は、エクセルVBAでFileDialogオブジェクトを使ってファイル選択ダイアログを表示させる方法です。tonari-it.com2016.12.14エクセルVBAでDir関数を使って指定のファイルが存在するかどうかを判定する方法エクセルVBAでファイルを開く作業を自動化する方法についてのシリーズ。今回は開くファイルの指定をエクセルシートに変更し、またファイルが存在するかどうかをDir関数で判定する方法についてお伝えします。tonari-it.com2016.12.05まとめ今回紹介したミスを減らす4つの方法をまとめると以下の通りです。シートを保護する人の誤操作をプログラムが検知するインポートするファイルが正しいかどうかをチェックするファイルを自動的に選択するどれもカンタンに導入ができる方法です。工夫でミスって大幅に減らすことができるんです。メインの処理だけに偏りがちですが、人為的ミスを減らすことも業務効率化に繋がります。プランノーツ代表、コミュニティ「ノンプロ研」主宰。ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ★フォロー頂ければ嬉しいです。「コミュニティ+講座」形式で継続性&教え合える環境も提供。!ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。関連記事Excel・VBA活用術エクセルVBAでPowerPointでタイトルを変更しながらスライドを大量に生成するエクセルVBAでPowerPointを操作する方法についてお伝えしています。今回はエクセルVBAでPowerPointスライドをスライドタイトルを変更しながら複製する方法についてお伝えします。2016.09.22Excel・VBA活用術エクセルVBAでWordPress投稿用HTMLソースを自動で生成するWordPressサイトのソースをエクセルVBAで自動生成する方法についてのシリーズ。初回の今回ですが、エクセルの入力情報をもとにシングルページの1つのセクションについて自動でコード生成をする方法です。【初心者向けエクセルVBA】ファイルのコピーを使って取引先別の請求書を作る請求データ一覧から請求書を自動で作成するシリーズのVBA講座もいよいよ9回目です!今回はWorksheetのコピーではなく、ファイルをコピーして取引先別の請求書ファイルを作成する方法を解説します。2015.07.11Excel・VBA活用術エクセルVBAのFunctionプロシージャで祝日判定関数を自作する方法エクセルVBAのFunctionプロシージャの概要と、それを活用した祝日判定関数の作成方法をお伝えします。エクセルVBAには祝日を判定する関数が標準で用意されていないので自作する必要があります。VBAの本格解説本を書く必要があるのか3冊目となる書籍の企画が通過しました。VBAの本格解説本です。今からVBAの本格解説本を書く必要があるのかについて、出版社さんに企画の際に送った文面をだいたいそのまま記事として公開します。【エクセルVBA】AddItemメソッドでリストボックスに値を追加してみよう!ユーザーフォームを作って使ってみるまでを目標に、連載記事でコントロールのメソッドやプロパティ、イベントをご紹介しています。今回は、リストボックスにAddItemメソッドを使って値を追加する方法をご紹介しています。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった2020.02.072020.02.08GASでコピーしたGoogleスライドのプレゼンテーションを取得する方法2020.02.052020.02.05Facebookページいつも隣にitのお仕事タイトルとURLをコピーしました。