VBAに関するEnjoyExcelのブックマーク (57)

  • VBA×XLOOKUP関数|Rangeオブジェクト×配列でシンプルなコードを作る

    VBA×XLOOKUPでシンプルなコードを用意する 2020年前後から一部のユーザーに開放されていた関数ですが2024年になり一般ユーザーにも浸透してきた感があります。 よって今回はVBAでもXLOOKUP関数を使ってみることにします。画像(ワークシート)をご覧ください。 左の表のB列の情報をもとにCからE列に情報を取得します。データソースは右の表です。 VLOOKUP関数を使うとデータを取得することができますが今回はXLOOKUP関数を使ってみましょう。 コードはこちらです。 EnjoyExcel Rangeオブジェクトや配列を使ってできるだけシンプルなコーディングを意識しました。 Sub try_XLookup() Dim nme As String 'name 検索値 Dim rst As Variant 'result 結果を格納する変数 Dim srg As Range 'sea

    VBA×XLOOKUP関数|Rangeオブジェクト×配列でシンプルなコードを作る
    EnjoyExcel
    EnjoyExcel 2024/10/04
    XLOOKUP関数はVBAでも使うことができますよ。
  • エクセル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でメールを用意することができます。セルに準備した宛先を使ったりハイパーリンクや添付ファイルも用意する事ができます。
  • マクロでグラフを新規作成|関連オブジェクトをもとに3種類の方法を紹介

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

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

    マクロの学習方法はいくつかあります。その中でも書籍を選択する方は非常に多いです。 書籍は導入コストが低く簡単に入手できるのですが実際にパソコンで作業をする際の取り回しで困ったことはありませんか?

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

    「InputBox関数を使ったプロシージャを用意したのですが実際の使用状況に対応できません」という相談を受けました。 具体的にどんな事に困っているのか教えてもらいました。ポイントは2つです。

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

    記事はピボットテーブルの作り方を紹介した以下記事から続く内容となっております。(記事単体でも理解できます) リンク先の記事を読んだ後に記事をご覧いただくとピボットテーブルからグラフという一連の作業が理解できます。

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

    ExcelVBAを使えばワークシート上部に配置されたアイコンで用意された作業の多くを自動化することができます。 ピボットテーブルも例外ではなくマクロを構築する事で作業を自動化させることができます。

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

    VBAを勉強している方とミーティングをしている際こんな質問をいただきました。 「ワークシート内から特定の文字列を検索する際になぜFindメソッドを使わないのか?」という質問です。

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

    VBAを使ってやりたい事を起点に記事を並べました。目次をクリックすると関連の記事群に飛ぶ様にしています。 やりたい事は英語のAからZの後に50音順で並べています。「その他」だけ例外で最後に配置しました。

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

    「フォルダ内の棚卸をしたいのでファイル名を簡単に取得出来ませんか?」という問い合わせをいただきました。 もちろんVBAであれば一瞬で作業完了です。加えてマクロを構築する事で一緒にできる事を提示します。 対象ファイルのチェックができる(存在確認など) ファイル名と一緒に拡張子も取得できる エクセル以外の拡張子についても一括でファイル名を取得できる(拡張子を指定する事も可能)

    マクロでフォルダ内のファイル名を取得|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です。マクロが良い様に数えてループしてくれます。
  • VBA|クラスとは何か|本当に難しいのかを3つのポイントから検証

    「クラスモジュールとは何か?」ExcelVBAのユーザー様からいただく質問の中でこの質問が1番多いです。 クラスを一言で表現すると「オブジェクト、プロパティ、メソッドの設計図」です。 つまり「配下のプロパティ、メソッドの仕様を含め自分の考えでオブジェクトの仕様を設計する」という事です。 これでは分かりにくいかもしれないので具体的に考えてみましょう。既存のクラスを見る事にします。

    VBA|クラスとは何か|本当に難しいのかを3つのポイントから検証
  • VBA×コピペ|値のみ貼り付け&簡単高速にコピーできる方法を公開

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

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

    「保存」ボタンを使わずにデータをSaveする MsgBox関数(メッセージボックス関数)について質問をいただきました。 質問はこちら MsgBox関数で「保存」というボタンは作成出来るのか? 例えば以下画像のようなメッセージボックスで用意されている保存ボタンです。(一番左のボタン) Excelを「保存」せずに右上の×ボタンを押下した際以下のようなメッセージボックスにボタンが表示されます。 結論としてはMsgBox関数では「保存」ボタンは作成できません。しかし同じ効果を得る事はできます。 少し違ったアプローチをすることでメッセージボックスからデータの保存を可能にします。 EnjoyExcel 直接「保存」というボタンは作成できないので別の方法をとります。 画像と違いボタンも2つにする事でよりシンプルに保存作業を構築してみます。 MsgBox関数が理解出来ていれば少しのアレンジで作業を構築でき

    VBA|メッセージボックスの「保存」ボタンを使わずにデータをSaveする
    EnjoyExcel
    EnjoyExcel 2023/11/03
    VBAのメッセージボックスには保存ボタンを作成する機能が用意されていません。しかし工夫することでワークブックを保存する事が出来る様になります。
  • VBA|Dir関数を使ってフォルダ内の複数ファイルを順番に処理する

    皆様はマクロを書いたワークブックから別のワークブックに対して作業をしたいと思った事はありませんか? 具体的には以下のような作業になります。 A.xlsmからB.xlsxのファイル名を取得したい A.xlsmからC.xlsxのデータを開きたい A.xlsmから〇〇フォルダ内にある複数の.xlsxファイルを順番に開いて作業したい

    VBA|Dir関数を使ってフォルダ内の複数ファイルを順番に処理する
    EnjoyExcel
    EnjoyExcel 2023/10/23
    Dir関数の使い方(基本編、応用編)です。Dir関数を使ってフォルダ内の複数ファイルを順番に開くという作業をしてみました。使用感が分かる様に動画も用意しています。Dir関数が苦手な方は是非読んでください。
  • VBA×PDF|ワークシートの一部を範囲指定してデータを出力する

    ワークシートの一部を選択してPDFに変換する VBA×PDFのシリーズ2つめの記事です。マクロを使って請求書を作られている方から質問をいただきました。 「手作業で範囲指定した場所だけPDFにして保存したい」けど出来ますか?という内容でした。 結論から申し上げますと可能です。ただ出来るのではなく「簡単にできる」を実現させます。

    VBA×PDF|ワークシートの一部を範囲指定してデータを出力する
    EnjoyExcel
    EnjoyExcel 2023/10/16
    シート内を範囲指定したところだけPDFとして出力する簡単な方法を用意しました。VBAの知識が必要です。