今回はマクロを使用して他のブックを操る方法を紹介したいと思います。
他のブックを操れると、データベースと実行ファイルを別にして情報を抽出する、などができます!
会社での書類作成などをクリックで作成できるようになりますね。
基本的なブックを開く、保存する。を実行するプログラムを紹介します!
新規ブックを開く
まずは単純に新しいエクセルブックを開いてみましょう。
Sub book1()
Workbooks.add
End Sub
開くだけなら一行でできます。
addで追加という意味なのでそのままですね。
workbooksをaddするとなります。
次に開いたブックを保存してみましょう。
エクセルブックを保存する
新しいエクセルブックを開いて編集するなら、次は保存がしたいと思います。
次のプログラムを実行してみましょう。
Sub book2()
Dim wb As Workbook
Set wb = Workbooks.add
wb.Worksheets(1).Range(“A1”).Value = “test1”
wb.SaveAs(“D:\test1.xlsx”)
wb.Close
End Sub
先程と同じように新しいブックを開き、開いたブックのA1セルにtest1を入力して名前をつけて保存し閉じるというプログラムになります。
順番に見ていきましょう。
Dim wb As Workbook
この行では新しいブックに対して変数を宣言しています。
wbは任意に変更することができます。
ここで宣言しておくことで次の行からプログラムを短くすることができます。
Set wb = Workbooks.add
先程宣言したwbにブックを指定しています。
新規ブックをwbという名前に指定する。という意味になります。
wb.Worksheets(1).Range(“A1”).Value = “test1”
これで新規ブックにtest1を入力することができます。
rangeでセルを指定するときに一番詳しく指定する場合は
ブック.シート.セルといった具合にどのブックのどのシートのどのセル、という指定をする必要があります。
先程wbには新規ブックを指定しているので短縮して書くことができました。
wb.SaveAs(“D:\test1.xlsx”)
次にブックの編集をしたら保存をしてみましょう。
wb.SaveAsこれでブックを保存する関数になります。
()の中には、保存するファイルパスと名前を拡張子をつけて入力しましょう。
名前の前に¥を書くのを忘れないようにしましょう。
これで保存ができます。
wb.Close
最後にCloseで開いたブックを閉じて終わります。
保存をしているので単純にブックをしていしてクローズで完了です。
意外と簡単だったと思います。
既存のエクセルファイルに上書きする
さて、次は既存のエクセルブックに上書きで保存してみましょう。
上書きするときには、まず既存のエクセルブックを開くことからはじまります。
次のプログラムを実行してみましょう。
Sub book3()
Workbooks.Open “D:\test1.xlsx”
Workbooks(“test1.xlsx”).Worksheets(1).Range(“A1”).Value = “test2”
Workbooks(“test1.xlsx”).Save
Workbooks(“test1.xlsx”).Close
End Sub
先程新規作成したtest1.xlsxの中身を編集して上書き保存するプログラムになります。
Workbooks.Open “D:\test1.xlsx”
まずはこちらでファイルパスとファイル名を指定して開きます。
Workbooks(“test1.xlsx”).Worksheets(1).Range(“A1”).Value = “test2”
こちらで編集したいブック、シート、セルを選択して入力(編集)します。
Workbooks(“test1.xlsx”).Save
Workbooks(“test1.xlsx”).Close
次に保存してエクセルを閉じます。
ワークブックをWorkbooksの次でファイル名を指定してSave、Closeでそれぞれ完了になります。
エラー処理をしたい
ブックを操作するときににエラーが出てしまうことがあります。
例えば開きたいブックが存在しない場合、新規保存するときにすでに存在している場合などです
今回は既存のエクセルブックこう言った場合のエラーに対する処理をしてみましょう。
Sub book4()
Dim newBookName As String
Dim newBookPath As String
Dim newBook As Workbook
newBookName = “test2.xlsx”
newBookPath = ThisWorkbook.Path & “¥” & newBookName
If Dir(newBookPath) = “” Then
Set newBook = Workbooks.add
newBook.SaveAs newBookPath
Else
MsgBox “既に” & newBookName & “というファイルは存在します。”
End If
End Sub
If Dir(newBookPath) = “” Then
Set newBook = Workbooks.add
newBook.SaveAs newBookPath
Else
MsgBox “既に” & newBookName & “というファイルは存在します。
今回のプログラムで見るべきはこちらです。
このIF文で保存する先に既に存在するかをチェックしてくれます。
存在している場合は既にファイルは存在しています。
といったメッセージを表示してくれます。
上書きしてしまい既存のファイルを消してしまうということがなくなります。
今回はここまでにします。
ありがとうございました。
コメント