-
【Excel VBA】FSOで指定したフォルダ内にある全てのサブフォルダ一覧を取得する方法
特定のフォルダの中に、さらにどのようなフォルダ(サブフォルダ)が存在するのかを調べ、その一覧をExcelシートに書き出したい、という場面は、ファイルの整理や集計作業の前処理としてよく発生します。 FileSystemObject(FSO)のFolderオブジェクトが持つ... -
【Excel VBA】FSOでテキストファイルの内容を読み込む方法 (ReadAll / ReadLine)
CSVファイルや、システムが出力したログファイルなど、外部のテキストファイル(.txt)の内容をExcelに読み込んでデータとして活用したい、という場面は非常に多くあります。 FileSystemObject (FSO)を使えば、テキストファイルを開いて、その内容をVBAで... -
【Excel VBA】FSOで既存のテキストファイルにデータを追記する方法 (OpenTextFile)
マクロを実行するたびに、その実行記録や結果を一つのログファイルにどんどん書き足していきたい、という場合があります。ファイルを新規作成するのではなく、既存のファイルの内容は保持したまま、末尾に新しいデータを追記していく必要があります。 File... -
【Excel VBA】FSOでテキストファイル(.txt)を新規作成し、書き込む方法
VBAマクロで処理した結果を、Excel形式ではなく、他のシステムと連携しやすいシンプルなテキストファイル(.txt)として出力したい、という場面は頻繁にあります。 FileSystemObject (FSO)を使えば、テキストファイルの新規作成から、内容の書き込みまでを... -
【Excel VBA】FSOでファイル名、拡張子、更新日時などの詳細情報を取得する方法
VBAで特定のファイルやフォルダ内のファイル一覧を扱う際、ファイル名だけでなく、そのファイルの拡張子、サイズ、最終更新日といった詳細な情報(メタデータ)を取得したい場面は非常に多くあります。 FileSystemObject (FSO)を使えば、ファイルを開くこ... -
【Excel VBA】FSOでファイルやフォルダの情報を取得する方法 (GetFile, GetFolder)
FileSystemObject(FSO)を利用したファイル操作の基本は、操作したい対象のファイルやフォルダを、まず「オブジェクト」として取得することから始まります。 オブジェクトとして取得することで、そのファイルやフォルダが持つ様々な情報(名前、パス、サ... -
【Excel VBA】FileSystemObject(FSO)でファイル操作を始めるための準備
VBAでファイルの有無を確認したり、フォルダをコピーしたり、テキストファイルの内容を読み書きしたりと、高度なファイルシステム操作を行いたい場合、**FileSystemObject(FSO)**という機能を利用するのが一般的です。 FSOは、VBAにもともと備わっている... -
【Excel VBA】デスクトップやドキュメントフォルダのパスを確実に取得する方法
マクロで作成したファイルをユーザーのデスクトップに保存したい、あるいはドキュメントフォルダにあるファイルを読み込みたい、という場面はよくあります。 しかし、これらのフォルダのパスは「C:\Users\Taro\Desktop」のようにユーザー名によって異なり... -
【Excel VBA】ZIPファイルを指定したフォルダに解凍(展開)する方法
VBAマクロで、外部から受け取ったZIPファイルの中にあるデータファイル(CSVやテキストファイルなど)を読み込んで処理したい、という場合があります。その際、手作業でZIPファイルを解凍するのではなく、VBAで解凍まで自動化できると非常にスマートです。... -
【Excel VBA】複数のファイルをZIP形式に圧縮する方法 (Shell.Application)
マクロで生成した複数のレポートファイルなどを、一つのZIPファイルにまとめて圧縮し、メール添付やバックアップ用に保存したい、という場面はよくあります。 VBAには直接ZIPを操作する命令はありませんが、Windowsの基本機能である「シェル(Shell)」をV... -
【Excel VBA】中身が空のZIPファイル(空の圧縮フォルダ)を作成する方法
VBAで複数のファイルをバックアップとしてZIP形式に圧縮・保存したい場合、まずその入れ物となる「空のZIPファイル」を作成する必要があります。 VBAには「ZIPファイルを作成する」という直接的な命令はありませんが、ZIPファイルの構造を利用した少し特殊... -
【Excel VBA】ユーザーにフォルダを選択させるダイアログの表示方法(2種類)
マクロで作成したファイルを特定のフォルダに保存したり、特定のフォルダ内にある複数のファイルを一括で処理したりする際に、その対象フォルダをユーザー自身に選んでもらいたい、という場面は非常に多くあります。 VBAには、このような「フォルダ選択」... -
【Excel VBA】「名前を付けて保存」ダイアログを表示してパスを取得する方法 (GetSaveAsFilename)
マクロで作成したレポートなどを保存する際、ファイル名を固定するのではなく、マクロの実行者にファイル名や保存場所、ファイルの種類(xlsxやpdfなど)を自由に決めてもらいたい、という場合があります。 VBAの**Application.GetSaveAsFilenameメソッド*... -
【Excel VBA】「ファイルを開く」ダイアログでブックを直接開く方法 (FindFile)
マクロの実行中に、ユーザーに任意のブックを選択させ、そのブックを直接開きたい場合があります。VBAには、この「ダイアログの表示」と「ファイルを開く」という2つの動作を、一度に実行してくれるシンプルなメソッドがあります。 それがApplication.Find... -
【Excel VBA】「ファイルを開く」ダイアログを表示してパスを取得する方法 (GetOpenFilename)
マクロで外部のExcelファイルを読み込む際に、ファイルパスをコード内に直接書き込む(ハードコーディングする)のではなく、マクロ実行時にユーザー自身にファイルを選択させたい、という場面は非常に多くあります。 VBAの**Application.GetOpenFilename... -
【Excel VBA】カレントフォルダを変更する方法(ChDir, ChDrive)
VBAには、CurDirというExcelアプリケーションの現在の作業フォルダ(カレントフォルダ)を取得する関数があります。それと対になる形で、このカレントフォルダをプログラムで変更するための命令も用意されています。 それがChDir(Change Directory)とChD... -
【Excel VBA】カレントフォルダ(CurDir)の取得と、その注意点
VBAでファイルを扱う際、現在の作業フォルダ、すなわち**「カレントフォルダ」**を基準に操作したい場合があります。例えば、パスを指定せずにファイル名だけで保存した場合、そのファイルはカレントフォルダに保存されます。 VBAには、このカレントフォル... -
【Excel VBA】Windowsレジストリに設定を保存・読み込みする方法
マクロで利用する設定値(例えば、前回開いたファイルのパスや、ユーザーが入力した名前など)を、Excelファイルを閉じて再度開いた後も記憶しておきたい、という場合があります。 設定の保存は、非表示のシートに書き込む方法が一般的ですが、VBAにはWind... -
【Excel VBA】開いている全ブックのセル変更履歴を記録(ログ)する方法
「誰がいつ、どのファイルの、どのセルの値を変更したのか」という操作履歴を自動で記録できれば、共同作業の信頼性やデータの監査性が大きく向上します。 Worksheet_Changeイベントは単一のシートしか監視できませんが、VBAのアプリケーションレベルイベ... -
【Excel VBA】UNIQUE関数で重複しないデータ(ユニークなリスト)を抽出する方法
データリストから重複する値を除いた、ユニークな(一意の)リストを作成することは、データ集計や分析の基本です。従来VBAではCollectionやDictionaryオブジェクトを使うのが一般的でしたが、最新のExcelでは、この処理を一行で実現できる強力な関数が登... -
【Excel VBA】重複するデータ行をループ処理で削除する方法(並べ替え利用)
顧客リストや商品マスターなどで、同じデータが複数行にわたって重複して登録されている場合、これらを整理してユニークなリストを作成したいことがあります。 Excelの「重複の削除」機能は強力ですが、VBAを使えばこの処理をマクロに組み込めます。この記... -
【Excel VBA】Collectionオブジェクトで重複しないリストを高速に作成する方法
データリストから重複する項目を取り除き、ユニークな(一意の)リストを作成したい、という場面はデータ集計の基本です。Excelの「重複の削除」機能でも可能ですが、VBAを使えばこの処理をマクロに組み込めます。 Forループで1セルずつ比較する方法では、... -
【Excel VBA】元のデータを自動反映する「リンクされた図」としてセル範囲を貼り付ける方法
Excelでダッシュボードやレポートを作成する際、「別シートにある表やグラフを、見栄え良く貼り付けたい。しかも、元のデータが変更されたら、貼り付けた内容も自動で更新されてほしい」という高度なニーズがあります。 これを実現するのが、Excelの強力な... -
【Excel VBA】セル範囲をコピーして、図(画像)として貼り付ける方法
作成した表やレポートの一部を、値や書式が変更されない「スナップショット」として別の場所に貼り付けたい、という場合があります。 VBAの.CopyPictureメソッドを使えば、セル範囲を見た目そのままの「図(画像)」としてコピーし、シート上に貼り付ける... -
【Excel VBA】セル範囲に名前を定義・削除する3つの方法
Excelの「名前の定義」機能を使うと、C2:D100のようなセル範囲に「売上データ」のような分かりやすい名前を付けることができます。これにより、数式が読みやすくなったり、VBAから特定の範囲を扱いやすくなったりと、多くのメリットがあります。 VBAを使え... -
【Excel VBA】2つの表を比較し、片方にしか存在しないデータ行を抽出する方法
「会員リスト」と「イベント参加者リスト」を比較して、『会員だがイベントに参加しなかった人』を抽出したい、といった場面はありませんか?これは、2つのリストを比較し、一方にしか存在しない「差分」のデータを見つける作業です。 VBAを使えば、このよ... -
【Excel VBA】2つの表を比較し、両方に存在する共通のデータ行を抽出する方法
「先月の顧客リスト」と「今月の顧客リスト」を比較して、両方のリストに名前がある顧客だけを抜き出したい、といった「2つのリストの共通項を探す」作業は、データ分析の現場で頻繁に発生します。 VBAを使えば、この照合と抽出のプロセスを自動化できます... -
【Excel VBA】オートフィルターで非表示になった行を一括削除する方法
Excelのオートフィルター機能で必要なデータだけを抽出した後、「その抽出されたデータだけを残して、非表示になっている他の行はすべて削除したい」という場面は、データ整理の際によく発生します。 手作業でこれを行うのは困難ですが、VBAを使えばこの処... -
【Excel VBA】摂氏を華氏に変換するユーザー定義関数(UDF)の作り方
Excelには多くの便利な組み込み関数がありますが、VBAを使えば、特定の計算や処理を行う自分だけのオリジナル関数(ユーザー定義関数 / UDF)を作成できます。 作成した関数は、SUMやVLOOKUPと同じように、ワークシートのセルから直接=関数名()の形で呼び... -
【Excel VBA】N行おきに罫線を引く方法(For…Stepループ)
縦に長いデータ表を印刷したり閲覧したりする際、数行おきに区切り線が入っていると、格段に見やすくなります。Excelの条件付き書式でも実現できますが、VBAを使えば、マクロの処理フローの一部として、より動的で柔軟な罫線設定が可能です。 この記事では...