Sub Workbook1()
Dim wb As Workbook
Set wb = Workbooks.Add
MsgBox wb.Name, vbOKOnly, wb.FullName
End Sub
Sub Workbook1B()
Dim wb As Workbook
Set wb = Workbooks.Add("C:\usr\VBA\temp.xls")
MsgBox wb.Name, vbOKOnly, wb.FullName
End Sub
Sub Workbook2()
Workbooks.Close
End Sub
Sub Workbook3()
ActiveWorkbook.Close
End Sub
Sub Workbook4()
ActiveWorkbook.Close SaveChanges:=False
End Sub
Workbook Object は、ディスク上に実体のあるファイルと対応するため、削除という概念はありません。「閉じて」メモリから開放すれば Excel の仕事は終わりで、ハードディスク上の実体ファイルを消すとかどうとかは、シェルが担当する分野になるからです。
Sub Workbook4B()
ActiveWorkbook.Close SaveChanges:=True,
FileName:="C:\usr\VBA\temp.xls"
End Sub
Sub Workbook5()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\usr\VBA\temp.xls")
MsgBox wb.Name, vbOKOnly, wb.FullName
End Sub
Sub Workbook6()
Workbooks.OpenText FileName:="C:\usr\VBA\temp.csv"
End Sub
OpenText メソッドは多数の引数を持ち、テキストファイルウィザードが持つ機能をすべて利用できます。これを上手に利用すれば、テキストファイルの取り扱いに際して、強力な武器になります。 Workbooks.OpenText の詳細についての解説と、簡易版ウィザードをこちらに用意しました。
Sub Workbook8()
ActiveWorkbook.Save
End Sub
Sub Workbook9()
ActiveWorkbook.SaveAs
End Sub
Sub Workbook10()
ActiveWorkbook.SaveAs FileName:="C:\usr\VBA\temp.xls"
End Sub
Sub Workbook11()
ActiveWorkbook.SaveCopyAs FileName:="C:\usr\VBA\temp.xls"
End Sub
Sub Workbook12()
If (ActiveWorkbook.Saved) Then
MsgBox "このワークブックは、前回保存された後、何も変更されていません。",
vbOKOnly, ActiveWorkbook.Name
Else
MsgBox "このワークブックには、保存されていないデータがあります。",
vbOKOnly, ActiveWorkbook.Name
End If
End Sub
Sub Workbook14()
Dim wb As Workbook
For Each wb In Workbooks
wb.Activate
Application.Wait Now() + 1 / 24 / 3600
Next wb
End Sub
| 用例 | 解説 |
|---|---|
| ActiveWorkbook | Active になっている Workbook Object を特定する。 |
| ActiveSheet.Parent | ActiveSheet の上位 Object として指定する。 |
| ActiveWindow.Parent | ActiveWindow の上位 Object として指定する。 |
| ThisWorkbook | 実行中の VBA コードの箱として特定する。 |
| Workbooks(1) | Workbooks Collection の item 順位を利用する。1から始まる連番を指定する。 |
| Workbooks.Item(1) | Workbooks Collection の item 順位を利用する。上の方法の丁寧な表現。*1 |
| Workbooks("Book3") | Workbooks Collection に対して、Workbook Object の Name プロパティを与える。 |
| Windows(1).Parent | Windows Collection の item 順位を利用する。1から始まる連番を指定する。 |
| Workbooks.Item(1).Parent | Windows Collection の item 順位を利用する。上の方法の丁寧な表現。*2 |
| Windows("Book5.xls").Parent | Windows Collection に対して、Window Object の Caption プロパティを与える。 |
ThisWorkbook.Parent上の表現は、Application と同じものを返します。