VBAで指定フォルダ内の全てのExcelファイル・シートを順番に開く方法
この記事では、VBAで指定フォルダ内の全てのExcelファイル・シートを順番に開く方法について記載します。
指定フォルダの選択は、ダイアログを表示して任意の場所を選択できるようにしています。
フォルダの指定
VBAでフォルダやファイルを選択するダイアログを表示するにはApplication.FileDialogオブジェクトを使用します。
Application.FileDialogに次の定数を渡すことでダイアログの種類を切り替えることができます。
定数名 | 内容 |
msoFileDialogFilePicker | ファイルの場所を選択するダイアログ |
msoFileDialogFolderPicker | フォルダの場所を選択するダイアログ |
msoFileDialogOpen | ファイルを開くダイアログ |
msoFileDialogSaveAs | ファイルを保存するダイアログ |
フォルダの場所を選択するダイアログを表示します。
Application.FileDialog(msoFileDialogFolderPicker).Show
ダイアログのタイトルや初期表示フォルダを指定します。
With Application.FileDialog(msoFileDialogFolderPicker) .Title = "取込場所の選択" 'タイトルの指定 .InitialFileName = "c:\" '初期表示フォルダの指定 End With
ダイアログで選択したフォルダのパスを取得します。
キャンセルボタンや×ボタンが押された時のために、ダイアログの戻り値を判定しています。
With Application.FileDialog(msoFileDialogFolderPicker) .Title = "取込場所の選択" 'タイトルの指定 .InitialFileName = "c:\" '初期表示フォルダの指定 If .Show = True Then 'ダイアログを表示して戻り値を判定 folderPath = .SelectedItems(1) 'フォルダのパスを取得 Else Exit Sub End If End With
フォルダ内のファイルを順番に開く
フォルダ内のファイルを開くにはFileSystemObjectオブジェクトを使用してファイルシステムにアクセスします。
指定フォルダ内に存在するファイルを読み取り専用で順番に開きます。
Dim fso As Object Dim file As Object Set fso = CreateObject("Scripting.FileSystemObject") For Each file In fso.getFolder("フォルダへのパス").Files Dim formWorkBook As workbook Set formWorkBook = Workbooks.Open(Filename:=file, ReadOnly:=True) 'ファイルを閉じる formWorkBook.Close Next
特定のファイルのみ開きたい場合は、GetExtensionNameメソッドでファイルの拡張子を判定します
If fso.GetExtensionName(file.Name) = "xlsx" Then 'Excelファイルのみ処理 End If
ファイル内のワークシートを順番に開く
開いたファイル内のワークシートを順番に処理します。
Dim fso As Object Dim file As Object Set fso = CreateObject("Scripting.FileSystemObject") For Each file In fso.getFolder("フォルダへのパス").Files If fso.GetExtensionName(file.Name) = "xlsx" Then Dim formWorkBook As Workbook Set formWorkBook = Workbooks.Open(Filename:=file, ReadOnly:=True) Dim formWorkSheet As Worksheet For Each formWorkSheet In formWorkBook.Worksheets 'ワークシートへの処理 Next 'ファイルを閉じる formWorkBook.Close End If Next
サンプルプログラム
指定フォルダ内の全てのExcelファイル・シートを順番に開くサンプルプログラムを記載します。
Option Explicit Sub main() Dim folderPath As String With Application.FileDialog(msoFileDialogFolderPicker) .Title = "取込場所の選択" .InitialFileName = "c:\" If .Show = True Then folderPath = .SelectedItems(1) Else Exit Sub End If End With Dim fso As Object Dim file As Object Set fso = CreateObject("Scripting.FileSystemObject") For Each file In fso.getFolder(folderPath).Files If fso.GetExtensionName(file.Name) = "xlsx" Then Dim formWorkBook As Workbook Set formWorkBook = Workbooks.Open(Filename:=file, ReadOnly:=True) Dim formWorkSheet As Worksheet For Each formWorkSheet In formWorkBook.Worksheets 'ワークシートへの処理 Next 'ファイルを閉じる formWorkBook.Close End If Next End Sub
Google AdSense PC
Google AdSense PC
関連記事
-
-
エクセルで円と銭の通貨単位を表示する
Excelで入力した数値に円と銭の単位を表示する方法を記載します。 2種類の表示方法がありますので、用途に応じて使い分けてください。 セルの書式設定で表示 セル …
-
-
[Windows]WSUSサーバの構築手順 1/6
Windows 2008 R2サーバにWSUSサーバを構築する Windows Server Update Services(WSUS)とは Windows S …
-
-
VBAからSQL Serverに接続する方法(Microsoft OLE DB Provider for SQL Server)
VBAから業務システムなどに使用しているデータベースに接続し、データを抽出することができます。 定期的に作成する資料などは、VBAでデータ取得処理を自動化し、ボ …
-
-
Outlookでメール送信中になったまま送受信が終了しない場合
開封確認のメールが正常に送信されず、送信中のまま送受信が終了しない場合があります。 原因となる開封確認メールは送信トレイに存在しないため、削除することができませ …
-
-
Excel VBAでOracleのデータを参照するマスター検索機能を作成する
エクセルのVBAでOracleに保存されているマスタを検索する機能を作成する機会がありましたので、サンプルプログラムを記載します。 Oracleへの接続設定 V …
-
-
エクセルファイルを無料のビューア(Excel Mobile)で開く【Excel Viewerの代替手段】
Microsoft Officeがインストールされていないパソコンでエクセルを開くために、マイクロソフトが提供していたMicrosoft Excel Viewe …
-
-
VBAでひらがな・カタカナの小文字(捨て仮名)を全角に変換する
VBAで半角文字から全角文字に変換したり、ひらがなをカタカナに変換するには、「StrConv」関数に引数を指定することで意図した文字に変換することができます。た …
-
-
[Windows]WSUSサーバの構築手順 4/6
Windows 2008 R2サーバにWSUSサーバを構築する WSUS(Windows Server Update Service)のインストール [スタート …
-
-
アクセス(Access)を購入せずに無料のランタイムだけで使う方法
Accessは、マイクロソフトが提供しているリレーショナルデータベースソフトです。 データベースにデータを蓄積することで、条件に一致するデータを抽出することやデ …
-
-
Excelのセル幅に合わせて縦横比を維持したまま画像サイズを自動調整する方法
VBAで画像を挿入することができますが、単純にセル幅に合わせて画像サイズを変更すると、縦長や横長の画像として挿入されます。 縦横比を維持したまま、画像を挿入する …