ブックの選択
開いるブックに対してのみ有効。ブックを開く方法については後述する。'Book1 をアクティブにする
Workbooks("Book1.xlsx").Activate
シートのように Workbooks(1) とする事もできるが、指定する数字はブックを開いた順番(だったかな?)というなんとも曖昧な値になるので、ろくでもない事が起きる予感しかしない。
ブックの追加
'新規ブックを追加する
Workbooks.Add
新規ブックを追加したら、追加されたブックはアクティブ化される。ブック情報の取得
マクロを記述しているファイルの情報を取得する。'ブック名を取得
Debug.Print ThisWorkbook.Name
'ブックのパスを取得 (ファイル名は含まない)
Debug.Print ThisWorkbook.Path
'ブックのパスを取得 (ファイル名を含む)
Debug.Print ThisWorkbook.FullName
アクティブなワークブック名を取得したい場合は以下。
Debug.Print ActiveWorkbook.Name
ブックを開く
Dim path As String
path = "C:\Users\xxxx\Desktop\Book1.xlsx"
'ブックを開く
Workbooks.Open Filename:=path
'ブックを読み取り専用で開く
Workbooks.Open Filename:=path, ReadOnly:=True
Filename:= は省略可。実際はファイルの存在確認などを行う必要があるので、以下のようになる。
Dim path As String, file As String, wb As Workbook
path = "C:\Users\xxxx\Desktop\Book1.xlsx"
'パスからファイル名を取得
file = Dir(path)
'ファイルの存在チェック
If file <> "" Then
'同名のブックのチェック
For Each wb In Workbooks
If wb.Name = file Then
MsgBox "同じ名前のブックを既に開いています。" & vbCrLf & file
End If
Next
'ブックを開く
Workbooks.Open Filename:=path
Else
MsgBox path & vbCrLf & "が存在しません。"
End If
ブックの保存
'上書き保存
ActiveWorkbook.Save
名前を付けて保存は以下のようにする。[いいえ], [キャンセル] が押された場合の対処をしておかないとエラーになる。'名前を付けて保存
On Error Resume Next 'エラー処理を無効化
ActiveWorkbook.SaveAs Filename:="C:\Users\xxxx\Desktop\Book2.xlsx"
If Err.Number <> 0 Then MsgBox "保存しませんでした。" '[いいえ], [キャンセル] が押されてないかチェック
On Error Goto 0 'エラー処理を通常に戻す
現状をコピーして別の名前で保存したい場合は、SaveCopyAs を使用する。元のファイル自体は保存されない。'コピーを保存
ActiveWorkbook.SaveCopyAs Filename:="C:\Users\xxxx\Desktop\Book2.xlsx"
ブックを閉じる
'ブックを閉じる
ActiveWorkbook.Close
'ブックを保存せずに閉じる
ActiveWorkbook.Close SaveChanges:=False
0 件のコメント:
コメントを投稿