【VBA】応用

変数の宣言強制

Option Explicit

オプションで設定すると自動的に入力されるようになる

ファイル操作

パスを指定しない場合はカレントディレクトリが基準になる

操作 コマンド 備考
カレントディレクトリ移動 ChDir "C:\Sample" なければエラー
フォルダ作成 MkDir "C:\Sample" 既にあればエラー
ファイルコピー FileCopy "C:\コピー元.txt", "C:\コピー先.txt" 既にあれば上書き
ファイル削除 Kill "C:\Sample.txt" なければエラー
ファイル名取得 Dir("C:\Tmp\Sample.txt") 例はSample.txt
'ファイル存在確認
If Dir(Target) <> "" Then
    Workbooks.Open Target
Else
    MsgBox "ファイルが存在しません"
End If

ブック操作

※Thisはアドインで使わないこと

操作 コマンド 備考
ブック取得 Workbooks("Sample.xlsx")
Workbooks(1)
ActiveWorkbook
ThisWorkbook
ブック名
インデックス
アクティブ
処理実行ブック
開く Workbooks.Open ("C:\Sample.xlsx") 既に開いていてもエラーにならない
閉じる Workbooks("Sample").Close SaveChanges:=False 保存しない
アクティブ Workbooks("Sample").Activate 拡張子不問
名前取得 ActiveWorkbook.Name
新規作成 Workbooks.Add
上書き保存 ThisWorkbook.Save
名前を付けて保存 Workbooks("保存対象.xlsx").SaveAs("保存先名") 左は拡張子必要
新規~保存
'ブック作成
Dim wb As Workbook
Set wb = Workbooks.Add
'編集
wb.Sheets(1).Range("A1").Value = "編集"
'名前を付けて保存
wb.SaveAs("C:\Book1.xlsx")
開いている全ブック名取得
Dim wb As Workbook
For Each wb In Workbooks
    Debug.Print wb.Name  'ブック名
    Debug.Print wb.FullName  'フルパス名
Next
ブックの全シートを検索する
Dim wb As Workbook
Dim currentSheet As Worksheet

Set wb = ThisWorkbook

For Each currentSheet In wb.Sheets
    Debug.Print currentSheet.name  'シート名
Next

シート操作

操作 コマンド 備考
シート取得 Sheets("Sheet1")
Sheets(1)
Sheet1
ActiveSheet
Workbooks("Book2.xlsx").Sheets("Sheet1")
シート名
インデックス
プロパティ名
アクティブ
別ブックのシート
アクティブ Sheets(2).Select
追加 Sheets.Add
Sheets.Add After:=ActiveSheet
Workbooks("Book2.xlsx").Sheets.Add
アクティブシートの左に追加
アクティブシートの右に追加
別ブックに追加
コピー Sheets("Sheet1").Copy
Sheets(1).Copy After:=Sheets("Sheet2")
新規ブックにコピー
Sheet2の右にコピー
削除 Application.DisplayAlerts = False
Sheets("Sheet1").Delete
Application.DisplayAlerts = True
移動 Sheets(1).Move
Sheets(1).Move After:=Sheets("Sheet2")
新規ブックに移動
Sheet2の右に移動
非表示 Sheets(1).Visible = xlSheetHidden
Sheets(1).Visible = xlSheetVeryHidden
エクセルで再表示可
エクセルで再表示不可
再表示 Sheets(1).Visible = xlSheetVisible
名前取得 Sheets(1).Name
名前変更 Sheets(1).Name = "名前"

セル操作

操作 コマンド 備考
セル取得 Range("A1")
Range("名前")
Cells(1, 1)
ActiveCell
Selection
座標指定
名前付きセル
行,列番号で取得
アクティブセル
選択範囲
値取得 Range("A1").Value
Cells(1,1).Value
Range(Cells(1,1), Cells(2,2)).Value
位置取得 Range("B1").Row
Range("B1").Column
Cells(1, 2).Address
行(1)
列(2)
絶対参照($B$1)

日時

'時分秒 ※23:59:59
Time
'日時 ※2020/05/12 23:59:59
Now
'カスタマイズ ※令和2年5月2日(土)1時2分3秒
Format("2020/05/02 01:02:03", "ggge年m月d日(aaa) h時m分s秒")
形式 説明 日付 結果 備考
yyyy 西暦 2021/1/1 2021 yyで21
ggg 元号漢字 2021/1/1 令和 ggで令、gでR
ee 和暦 2021/1/1 03 eで3
aaaa 曜日 2021/1/1 金曜日 aaaで金

Me

自分自身を示す
ThisWorkbook内に記載すればThisWorkbookと同じ
Sheet内に記載すれば記載したシートと同じ

    Me.Name