VBA

シート/ブック/ファイル/フォルダ操作

1つのシートの新規ブックへのコピー
sheet("チェックシート").Copy
シート名を指定してcopyを実行すると新規ブックが開かれシートがコピーされます。
複数シートの新規ブックへのコピー
Worksheets(Array("チェックシート","チェックシート2")).Copy
複数シートを一括で新規ブックにコピーしたい場合はArray関数を使用します。
シートを追加する
Worksheets.Add(Before,(After).Count)
Add関数を使用しBeforeかAfterどちらかを指定します。省略した場合はアクティブシート前に追加されます。
シートに名前を指定して追加する
Worksheets("sheet1").Copy After:=Worksheets(Worksheets.Count)
Activesheet.Name="種類"
コピーに続けてName関数を使用することでコピーと同時にシート名を変更することが出来ます。
シートを削除する
Application.DisplayAlerts=False
sheets("種類").Delete
Application.DisplayAlerts=True
Deleteで削除が可能です。また、シートを削除する前にアラートをオフにしておくと削除の警告メッセージが発生しなくなります。
ワークシート用変数を用意する
Dim sht As Worksheet
Set sht=ActiveWorkbooks("sheet1")
sht.Range("A1:C5")
シート自体を変数に入れることによってコード記述を短くすることが出来シートへの命令もしやすくなります。
シート全体をクリアする
Worksheets("sheet1").cells.Clear
書式もすべてクリアにします。
別のブックにシートをコピーする
Workbooks("Book1").Worksheets("sheet1").Activate
Activesheet.Copy Before:=Workbooks("Book2").sheets(1)
まずコピーで現在のアクティブシートを指定し、コピー先のブック名、どのシートの前後に追加するかを指定します。
任意のシート名を変更する
Worksheets(1).Name="製品"
Worksheets(1)は先頭にあるシートという意味で、例では名前を「製品」に変更しています。
複数シートを選択する
Sheets(Array("sheet1","sheet2","sheet3")).Select
複数を選択するときにはArray関数を使用します。
表示倍率の変更
ActiveWindow.Zoom=200
200は画面倍率200%にするという意味です。
ブックを保存して閉じる
ActiveWorkbook.Close SaveChanges:=True
SaveChangesにTrueを指定することで保存するという意味になります。
ブックを保存しないで閉じる
ActiveWorkbook.Close SaveChanges:=False
SaveChangesにFalseを指定することで保存するという意味になります。
同フォルダ内にあるブックを開く
Workbooks.Open ThisWorkbook.Path & "\test.xlsx"
ThisWorkbook.Pathの後に続けてパス名を記述することで同一フォルダ内のブックを開けます。
名前○○はすでに存在します、エラー対処方法
Dim name As object
For Each name In Names
    If name.visible=False Then
    name.visible=True
    End if
Next
意図せず作成された名前の定義は表に出ていないことがあります。削除する前にまずは全ての名前の定義を表示させる必要がありますのでname.visible=Trueとして表示させます。
ブック内全ての名前の定義を削除する
For Each a In ActiveWorkbook.Names
            a.Delete
Next
変数に名前の定義を入れDeleteで削除が可能です。
ブック単位で名前の定義を削除する
For Each a In ActiveWorkbook.Names
          If a.Parent.Name=ThisWorkbook.Name Then
          a.Delete
          End if
Next
ThisWorkbook.Nameだったら名前を削除すると指定しています。
シート単位で名前の定義を削除する
For Each a In Worksheets("sheet2").Names
          a.Delete
Next
今度はシート単位で変数に名前を入れ削除しています。
特定シートの名前の定義を削除する
For Each a In ActiveWorkbook.Names
          If Range(a).Parent.Name="sheet2" Then
          a.Delete
Next
特定のシートのみ名前の定義を削除したい場合はName="sheet2"と条件を指定することで削除出来ます。
新規ブックを作成し名前を付けて保存する
Dim bk As Workbook
Set bk=Workbooks.add
bk.SaveAs "C:\temp\sample.xlsx."
パス名に続けてブック名を指定します。
ブック内のシートを昇順にソート
Dim i As Long

With sheest.add

For i=1 To sheets.Count
    .Cells(i,1)=sheets(i).Name
Next

.Range("A1").CorrentRegion.Sort Key1:=Columns(1),order1:=xlAscending,Header:=xlNo
sheets(.Cells(1,1).Value).Move Before:=sheets(1)

For i=2 To sheets.Count
    sheets(.Cells(i,1).Value).Move After:=sheets(i-1)
Next

Application.DisplayAlerts=False
.Delete
Application.DisplayAlerts=True
ブック内のシートを昇順にソートする為にまず、仮シートを追加してそこにシート名を記載していきます。
そして昇順を指定して最初のシートを1番目に入れ替えます。2番目以降のシートは最後のシートの後になるように順番を入れ替えていき、最後に仮シートを削除して完了です。
ファイル名に日付をつける
Filename=Format(Now(),"yyyy-mm-dd-hh-mm-ss")
Formatで日付の書式を指定することが出来ます。
Dim ws As Worksheet
Set ws=sheets("sheet1")
ThisWorkbook.SaveAs Format(ws.Range("A1"),"yyyy\年mm\月dd\日")&".xlsx"
設定する方法はいくつかあります。
フォルダを移動する
Name"C:\Work\2023" As "C:\Work\Sub\2023"
Asに続きその後に新しいフォルダパスを指定するとフォルダを移動することが出来ます。
移動したフォルダ名を変更する
Name"C:\Work\2023" As "C:\Work\"& Format(Date,"yyyymmdd-hhmmss")
移動するついでに名前も変更する場合はパス名に続けてフォルダ名を指定します。
フォルダを新規作成する
If Dir("C:\Work\2023",vbDirectory)="" Then
    MKDir "C:\Work\2023"
End If
MKDirでフォルダを新規作成します。
作成・削除どちらにも言えることですがすでに存在する(削除の場合は存在しない)のに作成しようとするとエラーになるので注意してください。
フォルダを削除する
If Dir("C:\Work\2023",vbDirectory)<>""Then
    RMDir "C:\Work\2023"
End If
RMDirでフォルダ削除が可能です。例文ではIf文でフォルダが存在したら削除すると命令しています。
ファイルの削除
Kill "D:\2020年度\*.xlsx"
killでファイル削除ができます。