ワークブック操作

Excel ワークブックの操作もマクロで自動化できるんだよね?



そうだよ!今日はワークブック操作の基本について勉強しましょう。



テキストファイルやcsvファイルの操作とは違い、Excelのワークブックが対象になるから気をつけてね!
テキストファイルの操作に関してはまた別記事で紹介するよ!



今日使う実例はこちらになります。
Sub WORKBOOK_OP1()
MsgBox ThisWorkbook.Name
MsgBox ActiveWorkbook.Name
'ワークブック作成
Workbooks.Add
MsgBox ThisWorkbook.Name
MsgBox ActiveWorkbook.Name
'ワークブックを閉じる
ActiveWorkbook.Close
MsgBox ThisWorkbook.Name
MsgBox ActiveWorkbook.Name
'ワークブックを指定して開く
Workbooks.Open "C:\Users\xxxxx\ドキュメント\まるきち出欠表.xlsx"
MsgBox ThisWorkbook.Name
MsgBox ActiveWorkbook.Name
'ワークブックを名前を指定して保存
ActiveWorkbook.SaveAs Filename:="C:\Users\xxxxx\ドキュメント\まるきち出欠表_rename1.xlsx"
MsgBox ThisWorkbook.Name
MsgBox ActiveWorkbook.Name
'ワークブックを閉じる
ActiveWorkbook.Close True
End Sub



実例を動かす場合は、下記ファイル”まるきち出欠表.xlsx”をドキュメントフォルダーに保存してね!
具体的には、実例の22行目と29行目のxxxxxの部分を自分のPCのドキュメントフォルダーのアドレスに書き換えてね!



まるきち出欠表.xlsxについてはこちらからダウンロードしてください。
ThisWorkbookとActiveWorkbook
ワークブックの操作説明に入る前に、ThisWorkbookとActiveWorkbookについて説明します。
・ThisWorkbookは現在動作しているマクロ(VBAプログラム)が書かれているワークブックを指します
・ActiveWorkbookは現在アクティブになっているワークブックを指します
実例で言うと、ThisWorkbookは最初から最後まで「実行中のマクロが記載されているブック」のままですが、
ActiveWorkbookは実例8行目、15行目、22行目、29行目、35行目で5回切り替わっています。
このようにマクロ上現在操作しているブックがActivebookと表されると考えてください。


実例では、Nameプロパティを使いThisWorkbookとActiveWorkbookの名前をMsgBoxで表示しています。
MsgBox ThisWorkbook.Name
MsgBox ActiveWorkbook.Name
新規ワークブック作成
Excelに新規ワークブックを作成する時は実例8行目のようにWorkbookコレクションのAddメソッドを実行します。
Workbooks.Add
Workbooks.Add
このように新規ワークブックを作成すると、この新規ブック”Book1.xlsm”がActiveWorkbookになります。
MsgBox ActiveWorkbook.Name


ワークブックを開く
ワークブックを開く時は、実例22行目のようにWorkbooksコレクションのOpenメソッドを実行します。
Workbooks.Open
Workbooks.Open "C:\Users\xxxxx\ドキュメント\まるきち出欠表.xlsx"
準備しておいた、「まるきち出欠表.xlsx」が開き、このワークブックがActiveWorkbookとなります。


ワークブックを保存する
ワークブックの保存には「名前をつけて保存」と「上書き保存」があります。
ブックに名前をつけて保存するにはSaveAsメソッドを実行します。
ActiveWorkbook.SaveAs FileName:=”xxxxxx”
実例の29行目ではファイル名を”まるきち出欠表_rename1.xlsx”として同じドキュメントフォルダーにファイル名を変更して保存する例となります。
ActiveWorkbook.SaveAs Filename:="C:\Users\xxxxx\ドキュメント\まるきち出欠表_rename1.xlsx"
すでに同じファイル名のファイルが存在している場合、Excelは「置き換えますか?」という意味の確認メッセージを表示します。
ここで「はい」ボタンをクリックすると、既存のブックが新しいブックに置き換えられます。


「いいえ」「キャンセル」をクリックした場合、Excelはエラーを返します。


このエラーを回避するためには、下記のように、「On Error Resume Next」という命令を使いましょう。
On Error Resume Next
ActiveWorkbook.SaveAs Filename:="C:\Users\xxxxx\ドキュメント\まるきち出欠表_rename1.xlsx"
この命令を使うことで発生したエラーを無視して、次の行から処理を再開させることができます。
ワークブックを閉じる
ワークブックを閉じるにはCloseメソッドを実行します。
ActiveWorkbook.Close
ただし、閉じようとしてワークブックに編集がされていた場合Closeメソッドを実行すると確認メッセージが表示され自動処理が止まってしまいます。
そこで、実例35行目のように、
ActiveWorkbook.Close True
と記述することで自動的に変更を上書き保存してからブックを閉じることができます。
逆に編集された状態で保存したくない時はFalseを指定しましょう。
ActiveWorkbook.Close False
ワークブック操作1 作成,開く,保存,閉じる まとめ
今日はワークブックの基本操作として、新規ワークブックの作成、ワークブックを開く、保存する、閉じるといった処理について学びました。
実務でもワークブックが自動化対象であれば、多用することになりますので是非習得してください。
コメント