【BOOK操作】他のエクセルブックを操る

今回はマクロを使用して他のブックを操る方法を紹介したいと思います。

他のブックを操れると、データベースと実行ファイルを別にして情報を抽出する、などができます!

会社での書類作成などをクリックで作成できるようになりますね。

基本的なブックを開く、保存する。を実行するプログラムを紹介します!

新規ブックを開く

まずは単純に新しいエクセルブックを開いてみましょう。

Sub book1()

  Workbooks.add

End Sub

Copy

開くだけなら一行でできます。

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

Copy

先程と同じように新しいブックを開き、開いたブックの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

Copy

先程新規作成した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

Copy

If Dir(newBookPath) = “” Then

 Set newBook = Workbooks.add

 newBook.SaveAs newBookPath

Else

 MsgBox “既に” & newBookName & “というファイルは存在します。

今回のプログラムで見るべきはこちらです。

このIF文で保存する先に既に存在するかをチェックしてくれます。

存在している場合は既にファイルは存在しています。

といったメッセージを表示してくれます。

上書きしてしまい既存のファイルを消してしまうということがなくなります。

今回はここまでにします。

ありがとうございました。

コメント

タイトルとURLをコピーしました