複数のエクセルを操作する方法【 開く・操作する・閉じるを行うVBA 】

豆父ちゃん
このように考えている方におすすめの方法が、複数のエクセルファイルを 開く・操作する・閉じる処理を行うVBAです。
デスクワークでは、複数のエクセルファイルを同時に扱う業務がいっぱいですよね。
- 似たような内容のExcelデータを見比べる
- 提出用のエクセルファイルと管理用のエクセルファイルを見比べる
- エクセルファイル内にSheetがいっぱいあるとき、2つ開く
複数のエクセルファイルを扱う業務長時間行っていると作業ミスが発生してしまう恐れがあります。こんなときにおすすめなのが、複数のエクセルファイルを同時に操作するVBAです。
複数のエクセルファイルを同時に操作するVBAのメリット
- 複数のエクセルファイルを参照できる
- 複数のエクセルファイルから必要事項を転記できる
- 複数のエクセルファイルに転記できる
今回の記事では、登録しているエクセルファイルを自動で開いて操作するVBAを紹介します。
目次
VBAでブックを開く方法
ブックとはエクセルファイルそのもののこと。ブックを開くVBAは、VBAを組んだブックから他のブックを自動的に開くというプログラムです。
ブックを開くプログラムの基本構造
WorkBook.Open Filename:="〇〇〇"
注意として〇〇〇には「Bookの名前」ではなく「Bookの場所」を入力します。
ブックの場所はプロパティで調べることができます。
上記で調べたブックの場所をVBAに記載
たった一文のプログラムで「ブログ.xls」というエクセルファイルを開くVBAが完成。
簡単に他のエクセルファイルを開くことができるものの、開く操作には注意が必要です。
注意事項開きたいブックが存在しているのか確認が必要
開きたいブックが既に開かれているか確認が必要
大人数で扱うエクセルファイルを開こうとしている場合、上記2つの注意事項を確認するVBAが必要になります。
エクセルファイルの存在を確認するプログラム
Dir関数
使い方 | Dir(“Bookの場所") |
内容 | ブックの場所が存在した場合、ブックの場所を返しブックの場所が存在しない場合、空欄返す |
Dirはエクセルファイルが存在するかしないかを確認するときによく使われる関数です。
サンプル
1 | Sub test() |
2 | If Dir(“C:\Users\〇〇\Desktop\Book1.xls") <> “" Then |
3 | MsgBox “ファイルが存在します" |
4 | Else |
5 | MsgBox “ファイルが存在しません" |
6 | End If |
7 | End Sub |
Dir関数の動作確認は上記のプログラムでやってみて下さい。
下記の記事ではDir関数を応用して複数のエクセルファイルを1つにまとめるVBAを紹介しています。
開きたいブックが既に開かれているか確認するプログラム
既に開いているブックを開こうとするとエラーとなりプログラムの動作が止まってしまいます。
なので、エラーを一旦無視するプログラムを記載します。
エラーを一旦無視するプログラム
On Error Resume Next
このプログラムの記載以降エラーは無視されます。
エラーを無視できたとはいえ既に開いているブックを開くことはできないので注意が必要です。このエラーを無視するプログラムはいろんな場面で使えるので是非覚えていた方がいいでしょう。
ブックを開くプログラムの後にエラーが発生していたかどうかを確認するプログラムを記載します。
プログラムは下記のようになります。
1 | On Error Resume Next |
2 | WorkBook.Open Filename:="C:\Users\〇〇\Desktop\Book1.xls" |
3 | IF Err.Number>0 Then |
4 | MagBox"ファイルは既に開かれています" |
5 | Exit Sub |
6 | EndIf |
これで開きたいブックが既に開かれているか確認することができます。
上記で紹介した2つの確認するプログラムを記載することで「ブックを開く」という操作でエラーが発生し動作が停止してしまうことはないでしょう。
複数のブックを操作
しっかりとブックの宣言をすることで、同時に複数のブックを操作することが可能になります。
基本的な構造
Book1を開く
↓
すぐBook1の宣言をする
↓
Book2を開く
↓
すぐにBook2の宣言をする
これを続けることでBookをいくつ開いても同時に操作することができます。今回は3つのブックを同時に操作する例を紹介します。
プログラムは下記のようになります。
1 | “Desktop\Book1.xls" |
2 | Dim ABook As Workbook |
3 | Set Abook=ActiveWorkbook |
4 | Workbooks.Open Filename:="Desktop\Book2.xls" |
5 | Dim Book As Workbook |
6 | Set Bbook=ActiveWorkbook |
開いた直後のBookはActiveWorkbookになるので「開く」プログラムの直後すぐに宣言します。
ブックの内訳は下記のようになります。
ブック名 | プログラム内の宣言 |
ブログ.xls(プログラムを記載しているBook) | ThisWorkbook |
book1.xls | ABook |
book2.xls | BBook |
それぞれのブックの宣言を終えると後はやりたいことを記載するだけです。
例として3つのBookのA1セルに"OK"というテキストを記載するプログラムを紹介します。
サンプル
1 | Sub test() |
2 | Workbooks.Open Filename:="C:\Users\suzu\Desktop\Book1.xls" |
3 | Dim Abook As Workbook |
4 | Set Abook = ActiveWorkbook |
5 | Workbooks.Open Filename:="C:\Users\suzu\Desktop\Book2.xls" |
6 | Dim Bbook As Workbook |
7 | Set Bbook = ActiveWorkbook |
8 | ThisWorkbook.ActiveSheet.Range(“A1") = “OK" |
9 | Abook.ActiveSheet.Range(“A1") = “OK" |
10 | Bbook.ActiveSheet.Range(“A1") = “OK" |
11 | End Sub |
3つのブック操作を同時に行うことができました。またActiveSheetをSheet名に変更することでSheetを選んで操作することもできます。
当ブログでは紹介しているVBAをアレンジして提供するVBA開発の受注を行っています。
VBAの導入を考えていて気になる方は下記の記事を参照してください。
ブックを閉じる
ブックを閉じる際に注意すべき点は保存するか、保存しないかを明確にする必要があります。
このようなメッセージが表示されプログラムが止まってしまうのを防ぎましょう。
保存しないで閉じるプログラム
1 | Sub test() |
2 | Application.DisplayAlerts = False |
3 | Workbooks(“Book1.xls").Close |
4 | Application.DisplayAlerts = True |
5 | End Sub |
2行目でメッセージの表示をOFFにする。
3行目でBookを閉じる。(このときデータは保存されません)
4行目は表示をOFFにしたメッセージをONに戻す
保存してから閉じるプログラム
1 | Sub Sample3() |
2 | Application.DisplayAlerts = False |
3 | Workbooks(“Book1.xls").Save |
4 | Workbooks(“Book1.xls").Close |
5 | Application.DisplayAlerts = True |
6 | End Sub |
さきほど紹介した保存しないで閉じるプログラムとほとんど同じですが、3行目にデータを保存するプログラムが追加されています。
BookとSheetの違い
最後にBookとSheetの違いを確認しておきます。
Bookとはエクセルデータそのもののこと。Excelを立ち上げるとファイル名が「Book1」となっていることからも理解できます。
SheetとはBookの中にあるページのこと。Excelを開いたとき下にあるタブに表示されているのがSheetです。
本(Book)は複数のページ(Sheet)から成り立っていますが、これと同じことです。
プログラムを記載する際、「Book」や「Sheet」の記載が多く出てくるので、こんがらないよう違いを明確にしておきましょう。
VBA初心者が効率化マクロを導入する方法
VBAなんて扱ったことないけどエクセル作業を自動化するマクロを導入したい!
このような問題を抱えながら日々のエクセル業務をこなしている方がおおくいらっしゃるのではないでしょうか。
こんな問題を解決する方法がこちら
- マクロの開発を外注に依頼する
- マクロが設定されたエクセルファイルをダウンロードする
- 参考書やネットでVBAスキルを身に付ける
VBAの勉強を始める前は上記の方法で効率化マクロを導入していました。
完成されたマクロを使ってエクセル業務を処理する
↓
作業効率が2倍以上アップ!!
↓
便利すぎて自分でもマクロを設定したいと考え始める
↓
参考書やネットの情報でVBAスキルを身に付ける
↓
マクロ開発を代行できる程のスキルを習得
VBAは
他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい
という特徴があります。
毎日のルーティーン作業にうんざりしている、だれでもできる単純作業に時間を費やしている、という方はあなたに合った方法でVBAを導入しちゃいましょう。
マクロの開発を外注に依頼する
マクロの開発を外注に依頼する導入方法は
VBAを全く扱えない方でもエクセル作業を自動化できる最も簡単な方法
です。
「こんなエクセル作業を自動化したい」「作った資料を自動的にPDFで保存したい」「決まった様式に写真を自動で貼り付けたい」
こんな感じで実現したい内容を依頼するだけで業務内容に合ったマクロを開発してくれます。

ガッツポーズの人
デメリットは、費用がかかることだけ。
開発内容、依頼先によってかかる費用は大きく異なります。
私が会社員の頃利用していた業者さんは1マクロあたり2万円~3万円の費用がかかりました。

疑問がある人
ちなみに、マメBlogでもエクセルマクロ開発代行サービスを承っています。
開発内容の確認、VBAコードの設定、動作確認後の調整、など全ての工程を私(マメ父ちゃん)が行っているので、
費用が安い!スピード納期!!
でやらせてもらっています。
ほとんど独学で身に付けたVBAスキルなので、内容によっては開発できないこともあるのでご了承ください。
ご相談、見積もり依頼は完全無料ですので気になる方は下記のリンクよりお問合せ下さい。
マクロが設定されたエクセルファイルをダウンロードする
VBA初心者でも『マクロが設定されたエクセルファイルをダウンロード』ですぐにエクセル作業を自動化することができます。
たとえば、
A4用紙に写真を貼り付けてコメントを入力する作業を自動化したい!という場合、
『写真を貼り付けるマクロ』が設定されたエクセルファイルをダウンロードすれば問題解決です。
実際に、『写真を貼り付けるマクロ』をダウンロードして使っている様子がこちら

ガッツポーズの人
『マクロが設定されたエクセルファイルをダウンロード』する導入方法は、
VBA初心者でもマクロを導入できる、費用が安い、
というメリットがあります。
しかし
VBAに関する情報が多く公開されているとはいえ、ネット上で想定するマクロは見つけることが難しい
というデメリットもあります。

ガッツポーズの人
個人ブログやファイルを販売できるサイト「note」や「Tips」ではいろんなマクロの情報が掲載されているので是非参考にしてみてください。
今までマメBlogで受注した効率化マクロを下記のnoteで掲載していますので併せてチェックしてみてください。
参考書やネットでVBAスキルを身に付ける
先程も紹介しましたが、
VBAは他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい
プログラミングです。
言い換えると、
情報量が豊富なので自分で勉強できちゃう
ということです。
私のVBAスキルはほとんど独学で身に付けたもので、
考えた処理のほとんどをVBAで表現できるレベルにまで到達した!
と思っています。
私の作ったマクロをプロのプログラマーが見れば、
お前の書くコードはインチキだ!「変数の宣言」とか「引数」を正しく使えよ!!
と感じるはずです。
でも、
私からすればどうでもいい!!!想定した内容を正しく処理できればよくないですか!?
独学であっても『写真を貼り付けるマクロ』『全てのシートをPDF出力するマクロ』『連番を振るマクロ』など、
業務内容に合ったマクロを開発できるようになれます。
独学でVBAスキルを身に付けるコツは、
エラーが発生してもいいからひたすらコードを書く、なんでもいいからエクセル作業をマクロ化してみる
です。
とは言っても、全くの知識0の方は何をすればいいかわからないですよね。
VBA知識0の初心者の方は、参考書『たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】』を読んでみてください。
VBAの知識0の方でもすいすい読み進められる内容になっています。
やさしい内容にも関わらず「え!!VBAを使えばこんなことできるの!?」と感動すると思います。
実際に私はこの参考書を読んでからVBAの勉強を始めました。

ひらめく人
VBAの魅力を発見した後は、
ひたすら自動化したい処理を実現するコードを書くだけ
です。
【VBA 写真を貼る】、【VBA PDF出力】、のようにネット検索すれば知りたいコードをすぐにゲットできます。
実現したい処理に向かって、「調べる→書いてみる→エラーを改善する→調べる」を繰り返していると
自然といろんなマクロが作れるようになっているはずです。
VBAに興味が湧いてきたという方は今からVBA学習をスタートさせちゃいましょう。
ディスカッション
コメント一覧
まだ、コメントがありません