ブックマーク / www.slt-pgming-21.net (99)

  • エクセルVBA×Outlook|複数の宛先毎に添付ファイル付きメールを作成する

    複数の宛先毎に添付ファイル付きメールを作成する 「ExcelVBAからOutlookを使って複数人に自動でメールを送りたい」という質問に回答するシリーズです。 1回目の記事では以下内容を解説しました。 Excelに入力された宛先を使ってメールを用意したい メールの文内でハイパーリンクを使いたい 添付ファイルを用意したい EnjoyExcel 前回記事の内容だけでも大抵のことはできる様になります。 今回はより実務に近い内容にチャレンジしていきます。 今回は2回目になります。応用編という事でもう少しテクニカルな事をやってみましょう。 「複数の宛先へのメールを用意する中で宛先ごとに異なるファイルを添付させる」という作業を構築していきます。 先にポイントを提示しておきます。以下3点です。 複数(100件程度)の宛先に向けてメールを用意する メールの宛先毎に独自の(ユニークな)添付ファイルを作成す

    エクセルVBA×Outlook|複数の宛先毎に添付ファイル付きメールを作成する
    EnjoyExcel
    EnjoyExcel 2024/06/02
    メール100件を30秒以内に作成します。宛先ごとに異なるファイルを添付することができます。
  • エクセルVBA×Outlook|メールにハイパーリンク&添付ファイルを用意する

    メールにハイパーリンク&添付ファイルを用意する ExcelVBAからOutlook経由でメールを送信したいという質問をいただきました。 続けて会話を進めるとさらに具体的な要件を引き出すことができました。やりたい事は以下3点の様です。 Excelに入力された宛先を使ってメールを用意したい メールの文にはハイパーリンクを付けたい メールにファイルを添付したい 最終的には1~3の作業を1つのまとまりにして1クリックで仕事が終わるようにしたいという事でした。 もちろんExcelVBAを使えば作業を自動化することができます。 EnjoyExcel ExcelVBAを使えばさらに業務を効率化させることができますよ。 複数の宛先へのメールを用意する中で宛先ごとに異なるファイルを添付させることもできます。 複数の宛先ごとに対応を変えられるのであれば改善効果は大きそうですね。 では今回のExcelVBA×

    エクセルVBA×Outlook|メールにハイパーリンク&添付ファイルを用意する
    EnjoyExcel
    EnjoyExcel 2024/04/27
    ExcelVBAからOutlookでメールを用意することができます。セルに準備した宛先を使ったりハイパーリンクや添付ファイルも用意する事ができます。
  • VBA|パスワード付きワークシートの保護と解除を単一プロシージャで実行する

    VBAワークシートの保護と解除 「VBAでワークシートの保護と解除を行いたいです。方法を教えてください。」という問い合わせをいただきました。 まずは結論です。ExcelVBAでもワークシートの保護と解除を用意する事ができます。 質問者様にさらに話を聞いてみると以下のような作業をマクロで用意したいとの事でした。 まずは保護状態のワークシートを解除して一定の作業をします。その後再びワークシートを保護するという内容です。 解除:プロシージャの先頭でワークシートの保護を解除 作業:ワークシートに必要な情報を書き込む 保護:プロシージャの最後で再びワークシートを保護 「保護」だけ、「解除」だけというマクロも用意できますが実際には「保護」と「解除」はセットで使う事が多いです。 EnjoyExcel 1つのプロシージャの中でワークシートの保護と解除は何度でも使用する事ができます。 よって質問者様の課題は

    VBA|パスワード付きワークシートの保護と解除を単一プロシージャで実行する
    EnjoyExcel
    EnjoyExcel 2024/04/01
    1つのプロシージャの中でパスワード付きワークシートの保護と解除ができます。コード自体は非常に簡単です。
  • マクロで文字列の置換はVBA関数のReplace|4つの方法を比較

    マクロで文字列の置換はVBA関数のReplace関数1択 記事では「文字列の置換」について説明します。VBAでも置換は可能です。 VBA初心者でもワークシート関数に詳しい方であれば比較的簡単なコードで作業を構築できます。しかし問題もあります。 置換についてはどの方法を使えばよいのか分からないという質問が多いです。実際に方法は複数存在します。 まずは問い合わせがあった方法を4点並べてみます。結論から申し上げますと「どれでもOK」です。 VBA関数のReplace関数 RangeオブジェクトのReplaceメソッド ワークシート関数のReplaceメソッド ワークシート関数のSubstituteメソッド EnjoyExcel 私個人としてはVBA関数のReplace関数1択です。 ポイントは「コードの書きやすさ」と「配列」です。 記事ではまず4つの方法を深堀りします。そのあとで情報を総括し

    マクロで文字列の置換はVBA関数のReplace|4つの方法を比較
  • マクロでグラフを新規作成|関連オブジェクトをもとに3種類の方法を紹介

    3種類の方法を使ってマクロでグラフを新規作成する Excelではワークシートの情報をもとにグラフやピボットグラフを作成する事ができます。 という事はVBAでもグラフを作成する事ができます。 グラフ作成は面倒なので工数を減らす為に実際にVBAを使ってグラフを用意したことがある方はたくさん居るはずです。 しかしVBAを使ってグラフを作るとなると非常に分かりにくいので止めてしまう方が多い様です。 グラフは関連オブジェクトが分かりにくい なぜ分かりにくいのかをヒアリングしたところ返ってきた回答は1択でした。 Enjoy Excel 「関連オブジェクトが複雑でとにかく分かりにくい」という回答でした。 特に新規作成時にどうやってグラフを準備したら良いのか分かりません。 関連オブジェクトが複雑で分かりにくい原因を見つける為に調査を進めてみると2つのポイントが見つかりました。 グラフを表示させる場所は2箇

    マクロでグラフを新規作成|関連オブジェクトをもとに3種類の方法を紹介
    EnjoyExcel
    EnjoyExcel 2024/03/07
    VBAを使ったグラフの作成は「複雑で分かりにくい」様です。理由としては作成方法が3種類あり情報が整理できていない事が挙げられます。情報を整理して簡単にグラフを作成出来るように解説していきます。
  • マクロ学習時におすすめの作業環境|Kindle×デュアルモニター

    おすすめの作業環境はKindleとデュアルモニター マクロの学習方法はいくつかあります。その中でも書籍を選択する方は非常に多いです。 書籍は導入コストが低く簡単に入手できるのですが実際にパソコンで作業をする際の取り回しで困ったことはありませんか? の開きを固定しながらExcelの画面(VBEなど)を見て作業をするのが大変 重たい書籍は移動時に取り回しが大変 字が小さい書籍は読むこと自体が大変 私はVBA初心者の頃1番の事例で困っていました。うまく環境を整備できずモチベーションを維持するのが難しかったです。 勉強初期の頃は学習の継続が難しいですよね。勉強以外の事はできるだけ気を使いたくないです。 Enjoy Excel とキーボードで手がふさがっている中で「目で色々な情報を追うのが当に大変」でした。 記事では私がVBAを学習していた頃に最も良いと感じた作業環境を紹介します。この環境な

    マクロ学習時におすすめの作業環境|Kindle×デュアルモニター
    EnjoyExcel
    EnjoyExcel 2024/02/26
    マクロの勉強を継続させるには作業環境を整える事も重要な要素の1つです。私自身が初心者の頃マクロを勉強している時に一番良いと感じた作業環境を紹介します。キーワードは「Kindle×デュアルモニター」です。
  • VBA|InputBoxメソッドで戻り値空白とキャンセルの処理を分ける

    InputBoxメソッドで「戻り値空白」と「キャンセル」の処理を分ける 「InputBox関数を使ったプロシージャを用意したのですが実際の使用状況に対応できません」という相談を受けました。 具体的にどんな事に困っているのか教えてもらいました。ポイントは2つです。 テキストボックスが空白のままOKボタンを押される事がある(処理が用意できてない) 「数値で入力・・・」と書いていてもテキストボックスに文字列が入力されてしまう InputBox関数では「テキストボックスが空白の時の戻り値」と「キャンセルボタンを押した時の戻り値」が同じです。 ボタンの操作に応じてその後の処理を区別したくても戻り値が同じでは処理をコントロールできません。 もう1つはテキストボックスに入力される値です。 InputBox関数では値を数値で受け取る仕様のコードの中で文字列が入力されるとエラーが出て処理が止まってしまいます

    VBA|InputBoxメソッドで戻り値空白とキャンセルの処理を分ける
    EnjoyExcel
    EnjoyExcel 2024/02/09
    InputBox関数はテキストボックスが空白の時にOKボタンを押された時とキャンセルボタンを押した時の戻り値が同じです。InputBoxメソッドは戻り値が違うので操作を分ける事ができます。詳細は記事をご覧ください。
  • 【応用編】ExcelVBAでピボットテーブルと連動したグラフを自動で作成する

    VBAでピボットテーブルと連動したグラフを作成する 記事はピボットテーブルの作り方を紹介した以下記事から続く内容となっております。(記事単体でも理解できます) リンク先の記事を読んだ後に記事をご覧いただくとピボットテーブルからグラフという一連の作業が理解できます。 基編【基編】VBA×ピボットテーブルの作り方|レポートにフィールドを追加する ピボットテーブルからピボットグラフを用意してみます。 以下リストの様な3つの課題を持っている人には特におすすめの記事になっています。 ピボットテーブルからグラフを自動で作りたいが用意する方法が分からない グラフを用意するだけではなくて見た目をカスタマイズしたい エラー対策も考えておきたい(ピボットテーブルが無い時はグラフを作らない等) EnjoyExcel 余談ですが通常のテーブルから直接ピボットグラフを作る事も可能なんですよ。 今回は順を追

    【応用編】ExcelVBAでピボットテーブルと連動したグラフを自動で作成する
    EnjoyExcel
    EnjoyExcel 2024/01/31
    ピボットテーブルの記事ですが通常のグラフでも活かせることがたくさん書いてあります。Functionプロシージャについても書かせてもらいました。サブルーチンに興味がある方にも見ていただける内容になっています。
  • 【基本編】VBA×ピボットテーブルの作り方|レポートにフィールドを追加する

    VBAを使ったピボットテーブルの作り方を解説 ExcelVBAを使えばワークシート上部に配置されたアイコンで用意された作業の多くを自動化することができます。 ピボットテーブルも例外ではなくマクロを構築する事で作業を自動化させることができます。 以下箇条書きに書かれているような作業を検討されているExcelユーザー様におすすめの機能です。 「毎日、毎週、毎月」など一定のタイミングで用意されたデータ群を使ってリスト(テーブル)を作成したい 複数のリスト(テーブル)にあるデータを集合させつつ組み替えることで必要な情報を抽出したい グラフィカルで使いやすいグラフを生成したい(グラフのフィールド内でフィルターをかけるなど) 集計データからのテーブル、グラフの作成は手作業でないと・・・と思われがちですがVBAなら数秒で作業終了です。 作成されたテーブルはフィルターなど便利な機能が用意され「見易い」かつ

    【基本編】VBA×ピボットテーブルの作り方|レポートにフィールドを追加する
    EnjoyExcel
    EnjoyExcel 2024/01/26
    毎日、毎週、毎月の作業で元データを集めてピボットテーブルを作成されている方。ピボットテーブルは自動で用意できますよ。
  • VBAのFindメソッドは変数が難しい|文字列検索はLike演算子!

    文字列検索はFindメソッドよりLike演算子を使おう VBAを勉強している方とミーティングをしている際こんな質問をいただきました。 「ワークシート内から特定の文字列を検索する際になぜFindメソッドを使わないのか?」という質問です。 私は特定の文字列や数値の検索時にFindメソッドは使わずLike演算子を採用します。理由はこの2つです。 Findメソッドの戻り値であるRangeオブジェクトの扱いが難しいから(オブジェクト変数の使い方) Like演算子の方が「簡単かつ速い」から しかし初心者様の多くはFindメソッドを採用する様です。 EnjoyExcel セルの中にある文字列や数値を検索する方法を調べる時のキーワードが重要です。 ネット検索時に「VBA 文字列 検索」に近いキーワードで検索していませんか? 「文字列を検索・・・」の様なキーワードでインターネット検索を行うと「Findメソッ

    VBAのFindメソッドは変数が難しい|文字列検索はLike演算子!
    EnjoyExcel
    EnjoyExcel 2024/01/16
    「文字列検索の際なぜFindメソッドを使わないのか?」という質問をいただきました。私は文字列検索の際はLike演算子を使います。なぜFindメソッドを使わないのか、なぜLike演算子を使うのかについて説明しています。
  • 【逆引き】やりたい事から記事を選択できるようにしました

    やりたい事から記事を選択できるようにしました VBAを使ってやりたい事を起点に記事を並べました。目次をクリックすると関連の記事群に飛ぶ様にしています。 やりたい事は英語のAからZの後に50音順で並べています。「その他」だけ例外で最後に配置しました。 EnjoyExcel やりたいことが決まっている人は「逆引き」で記事を検索できると時短につながります。 よって「情報への到達容易性」を高める事ができます。 関連書籍 「逆引き」検索ができるです。逆引きの構成で書かれたのメリットは「具体例」がある事です。 自身のやりたい事と6~7割ぐらい一致していれば少しのアレンジだけでコードを用意する事ができます。 解説もついているのでアレンジもしやすいうえコードを自作する際における自身の引き出しを増やす事ができますよ。 事例がつまったおすすめ書籍 リンク おすすめこちらの電子書籍もおすすめです。Kin

    【逆引き】やりたい事から記事を選択できるようにしました
    EnjoyExcel
    EnjoyExcel 2024/01/13
    やりたい事を起点に記事を並べました。やりたい事が決まっている方はすぐに記事を見つけられる仕様になっています。やりたい事が決まってない人は見出しを見てください。VBAでできる事が分かる様になります。
  • マクロでフォルダ内のファイル名を取得|Excel以外の拡張子にも対応

    マクロでフォルダ内のファイル名を取得する 「フォルダ内の棚卸をしたいのでファイル名を簡単に取得出来ませんか?」という問い合わせをいただきました。 もちろんVBAであれば一瞬で作業完了です。加えてマクロを構築する事で一緒にできる事を提示します。 対象ファイルのチェックができる(存在確認など) ファイル名と一緒に拡張子も取得できる エクセル以外の拡張子についても一括でファイル名を取得できる(拡張子を指定する事も可能) EnjoyExcel フォルダ関連の仕事はDir関数を使えば高い確率で解決します。 Excel以外の拡張子でも簡単にファイル名を取得する事ができますよ。 Dir関数はDo ~ Loopを用いたステートメント群と相性が良いです。今回はDo While ~ Loopステートメントを使います。 コードの中でループを続けるための条件を2つ用意しました。合わせてコードと解説も2つ用意する事

    マクロでフォルダ内のファイル名を取得|Excel以外の拡張子にも対応
    EnjoyExcel
    EnjoyExcel 2024/01/12
    「フォルダ内の棚卸をしたいのでファイル名を簡単に取得出来ませんか?」という問い合わせをいただきました。VBAであれば一瞬で作業完了です。Excel以外の拡張子でも簡単にファイル名を取得する事ができますよ。
  • VBA|最後のシートまで処理を繰り返す|変数をうまく使いこなそう

    最後のシートまで処理を繰り返す為に変数を使いこなす ブック内のシートをつかむ方法について私(EnjoyExcel)を含め3人が議論していますよ。話を聞いてみましょう。 Aさん ワークブック内のワークシートを周回する方法が知りたいです。 EnjoyExcel 「For Each ~ Nextステートメント」を使うとブック内のシートを順につかむ事ができます。 一緒にローカルウインドウを見る事でより理解が進みますよ。 Bさん ローカルウインドウってなんですか? 私には「For Each ~ Nextステートメント」は難しいです。他の方法を教えて欲しいです。 EnjoyExcel 他の方法ありますよ。今から紹介するコードの方が分かりやすいので安心してください。 ついでにFor Each ~ Nextステートメントについても解説しますね。 最後のシートまで処理を繰り返す時の定番は「For Each

    VBA|最後のシートまで処理を繰り返す|変数をうまく使いこなそう
    EnjoyExcel
    EnjoyExcel 2023/12/30
    For Each ~ Nextステートメントを使う方法と使わない方法で最後のシートまで処理を繰り返す方法を解説。For Each ~ Nextステートメントは実行時に何が起きているのか分かりにくいので動画を使って分かりやすく説明します。
  • VBA|コードが長いプロシージャを短く切り分ける|マクロを部品化する

    VBAが理解できる様になるとコードは短くスッキリ書けるのですが勉強初期ではプロシージャが長くなりがちです。 理由は色々あります。主にこの3つがコードが長くなる理由です。 コピペで作ったプロシージャなのでどのコードを削れば良いのか分からない(内容を理解していない) 数か所でコードが重複している(似たような事を何度も書いている) レイアウトが良くない(コメントが過剰、スペースが多過ぎる、改行しないなど) コーディングが「コピー&ペースト」だとスキルアップしていかないのでコードを減らす事もできません。 よってコードの重複も無くなりません。コメントが多いのは親切ですが過剰だとプロシージャは長くなります。

    VBA|コードが長いプロシージャを短く切り分ける|マクロを部品化する
    EnjoyExcel
    EnjoyExcel 2023/12/23
    階層構造を持つフォルダ内から任意のキーワードを持つ画像を取り出すというマクロを以前紹介したのですがコードが長いプロシージャになっていました。今回はマクロを分割して可読性とメンテナンス性を改善しました。
  • VBAはフォルダ内の複数ブック×全部のシート名をセットで取得できる

    エクセルのフォルダやワークブック、ワークシートは簡単に作成する事が出来て自由に名前を決める事ができます。 多くの方にはメリットになるのですがグループで使うとなるとデメリットになる事もあります。 会社等集団でデータを扱う際は規則を決めておかないとフォルダ内に色々な名前のデータが混在してしまいます。 タイミングをみて「不要なデータの削除」&「残データの処置」を考えたいのですがまずは現状把握が必要です。

    VBAはフォルダ内の複数ブック×全部のシート名をセットで取得できる
    EnjoyExcel
    EnjoyExcel 2023/12/18
    Excelはフォルダやブック、シートを作る時に簡単に名前を付ける事ができるので会社等集団でデータを扱うような環境では収納場所に色々な名前のデータが出来てしまいます。今回の記事はデータの棚卸に使えます。
  • マクロで特定文字を含むシートを選択|For Each ~ Next & Like

    VBAにはいくつかの繰り返し処理が用意されています。皆様の仕事にあったコードを選んでいただく事が可能です。 バリエーションが豊富で色々な仕事に対応できる反面デメリットもあります。

    マクロで特定文字を含むシートを選択|For Each ~ Next & Like
    EnjoyExcel
    EnjoyExcel 2023/12/14
    ワークブックやワークシートなどの特定の要素を集団と捉えて周回することができるFor Each ~ Nextステートメントを使いましょう。対象の要素の数は分からなくてもOKです。マクロが良い様に数えてループしてくれます。
  • Excelで絵を描く|数秒で写真や画像を簡単にセルに展開できるアプリを紹介

    この記事は「Excelで一度はやってみたかったこと」を簡単にできるアプリケーションを紹介する記事です。 他の記事とは一線を画す内容になっています。早速題に入ります。 皆様は「Excelで絵が描けるのか?」と考えたことがありませんか?私は絵を作成しようと思った事があります。 世の中には図形や絵、写真をセル空間に高精度で再現される方も居ますね。根気強い方だなと感心してしまいます。

    Excelで絵を描く|数秒で写真や画像を簡単にセルに展開できるアプリを紹介
    EnjoyExcel
    EnjoyExcel 2023/12/07
    みんなが思った「Excelで一度はやってみたい事」を再現することができるアプリケーションです。お試しください。
  • VBA|クラスとは何か|本当に難しいのかを3つのポイントから検証

    クラスとは何かを3つのポイントをもとに検証 「クラスモジュールとは何か?」ExcelVBAのユーザー様からいただく質問の中でこの質問が1番多いです。 クラスを一言で表現すると「オブジェクト、プロパティ、メソッドの設計図」です。 つまり「自分の考えでオブジェクトの仕様を決めつつ配下のプロパティ、メソッドの仕様も決める」という事です。 これでは分かりにくいかもしれないので具体的に考えてみましょう。既存のクラスを見る事にします。 画像はオブジェクトブラウザーです。(VBEでF2キー押下)良く使うRangeクラスに赤枠を付けました。 これがクラスです。このクラスから生成されるのがオブジェクトです。 オブジェクトブラウザーから見たクラス(画像をクリックすると拡大します) 赤線の上にある太字の「Price」は私が作ったクラスです。 このRangeクラス(オブジェクト)の右側にはRangeクラスに用意さ

    VBA|クラスとは何か|本当に難しいのかを3つのポイントから検証
  • 【サンプルコード】VBAでクラスを使ったコードと使わないコードを比較する

    クラスを使ったコードと使わないコードを比較する クラスについて勉強してみたのですがいざ実践となるとどうしたら良いのか考えてしまった事はありませんか? クラスを用いたコードを実装するにあたりサンプルが欲しいなと考えている方に向けて回答を用意しました。 EnjoyExcel クラスを勉強しただけではコードを用意するのは難しいのでサンプルコードを用意しました。 自力でClassモジュールを使ったプログラムを実装するには相当なトレーニングが必要です。 ただクラスモジュールを使ったコードを用意するだけだと理解するのが難しい事が予想されます。 比較対象として同じアウトプットでクラスを使わないコードも用意しました。一緒に見る事で理解につながります。 今回の記事はコードだけで相当な量になります。解説はポイントだけにしました。需要次第で別記事を書きます。 関連書籍 クラスについて非常に詳しく解説している書籍

    【サンプルコード】VBAでクラスを使ったコードと使わないコードを比較する
    EnjoyExcel
    EnjoyExcel 2023/11/30
    クラスモジュールを使いマクロを組むのは少し難しいです。参考にするためのサンプルコードを用意しました。同じアウトプットでクラスを使わないコードも用意したので比較しながら勉強する事ができます。
  • VBA×コピペ|値のみ貼り付け&簡単高速にコピーできる方法を公開

    値のみ貼り付け&簡単高速にコピーできる方法がわかる 記事ではコピー&ペースト(以降コピペ)の中から「値貼り付け」にフォーカスを当てて説明します。 まずは通常のコピーメソッドの仕様を整理してみましょう。 通常のコピーメソッドは値を貼り付ける際に「書式設定」などセルの色々な設定を引き継いでしまいます。 よって値のみ(値だけ)コピぺしたい時に困ります。具体的に申し上げますと以下のような場合です。 コピー先のセルにはコピー元セルの背景を引き継ぎたくない コピー先のセルにはコピー元セルの罫線を引き継ぎたくない コピー先のセルにはコピー元セルに書いてある数式は不要で表示された値だけ欲しい こんな時です。頻繁に起こり得る事例です。なんとか解決させたいものですね。 EnjoyExcel 結論としては値貼り付けの際にはPasteSpacialメソッドを使う事にしましょう。 「値貼り付け」を使う事で全て解決

    VBA×コピペ|値のみ貼り付け&簡単高速にコピーできる方法を公開
    EnjoyExcel
    EnjoyExcel 2023/11/16
    エクセルのコピー&ペーストをVBAで再現します。中でも値貼り付けについてフォーカスを当ててみました。加えてコピーメソッドを使わずに簡単高速に値貼り付けをする方法を紹介しています。