Nameステートメント
Name 対象ファイル As 新しいファイル名
Name 対象フォルダー As 新しいフォルダー名
ファイルの名前を変更するには、Nameステートメントを使います。引数に、名前を変更したいファイルと、変更後のファイル名をフルパスで指定しま。 新しいファイル名は、カンマで区切るのではなく、As以下に記述するので注意してください。
新しいファイル名のパスを、元のファイルとは別のフォルダーに指定すると、ファイルを移動することもできます。 フォルダー名の変更も、同じNameステートメントで可能です。 引数に、フォルダーのパスを指定します。
Sample1:JAMフォルダーにあるSample1.txtのファイル名をmomo1.txtに変更
Sub Sample1()
Name “C:¥JAM¥Sample1.txt” As “C:¥JAM¥momo1.txt”
End Sub


Sample2:JAMフォルダーにあるtestというフォルダーの名前をHonbanに変更
Sub Sample2()
Name “C:¥JAM¥test” As “C:¥JAM¥Honban”
End Sub


FileCopyステートメント
FileCopy 対象ファイル, コピー先
Excel VBAでは、セルやシート、ブックを操作するだけでなく、Windowsが管理するファイルを操作することもできます。ファイルのコピー作業など、手作業では面倒な操作も、マクロで自動化できます。
ファイルをコピーするには、FileCopyステートメントを使います。引数として、コピーするファイルのパスと、コピー先のパスを指定します。コピー先のパスにファイル名を指定すると、指定した名前にリネームされます。
下のサンプルコードは、CドライブのJAMフォルダーにあるSample1.txtを、Sample2.txtというファイル名に変えてMOMOフォルダーにコピーする例です。定数を宣言するConstステートメントを使って、TargetFileという定数に、コピーするファイルのフルパスを設定しています。 なお、パスを指定せずにファイル名のみ指定すると、カレントフォルダーのファイルとして扱われます。
JAMフォルダーにあるSample.txtを、MOMOフォルダーにコピーする
Sub Sample()
Const TargetFile As String = “C:¥JAM¥Sample1.txt”
FileCopy TargetFile, “C:¥MOMO¥Sample2.txt”
End Sub


ExportAsFixedFormatメソッド
オブジェクト.ExportAsFixedFormat Type:=xlTypePDF
E x c e l 2007以降では、ブックやシートをP D F形式で保存する機能を利用できます。マクロでP D F化するには、Workbook、Worksheet、Rangeなどのオブジェクトに対してExportAsFixedFormatメソッドを実行します。
ExportAsFixedFormatメソッドは、PDF形式またはXPS形式で出力します。PDFで出力するには、引数TypeにxlTypePDFと指定する必要があります。引数Filenameを用いて、保存場所やファイル名を指定できます。引数Filenameを指定しなかった場合、カレントフォルダーに、ブックと同じファイル名でPDFを作成します。そのほか、引数QualityでPDFの品質(xlQualityStandardまたはxlQualityMinimum)を、引数Fromや引数Toでページ数を指定することなどができます。
Sample.pdfという名前でドキュメントフォルダに保存
Sub Sample()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=”C:\Users\ユーザー名\Documents\Sample.pdf”
End Sub
保存したPDFの例


WindowオブジェクトのSelectedSheetsプロパティ、PrintOutメソッド
ActiveWindow.SelectedSheets.PrintOut
ブック内にある複数のシートを選択してまとめて印刷するには、印刷したいシートをグループ化しておきます。シートをグループ化するには、配列を使う方法と、Selectメソッドを使う方法があります。Selectメソッドでグループ化するには、左で解説した通り、引数ReplaceをFalseに設定します。
印刷するシートをグループ化できたら、WindowオブジェクトのSelectedSheetsに対して、PrintOutメソッドを実行します。
Sheet1、Sheet2、Sheet4の3つを選択して印刷する
Sub Sample()
Sheets(“Sheet1”).Select
Sheets(“Sheet2”).Select Replace:=False
Sheets(“Sheet4”).Select Replace:=False
ActiveWindow.SelectedSheets.PrintOut
End Sub
印刷したいシートをグループ化した上で、PrintOutメソッドを実行



※Sheet1,Sheet2,Sheet4が印刷されます。
Selectメソッド
シート.Select Replace:=False
ブック内にある特定のシートを複数同時に選択することを「グループ化」といいます(図)。特定のシートだけ選んで印刷したり、別ブックにコピーしたりするときなどに便利な機能です。
シートをグループ化するには、シート名を配列で指定する方法と、Selectメソッドの引数を利用する方法があります。Selectメソッドを使う場合、引数ReplaceにFalseを指定してシートを選択すると、直前の選択シートを解除せずに追加選択することになり、グループ化できます。
なお、グループ化した状態を解除するには、アクティブシートなど適当なシートを1つ
選択し直せばOKです。
Sample1:Sheet1とSheet2をグループ化する
Sub Sample1()
Sheets(“Sheet1”).Select
Sheets(“Sheet2”).Select Replace:=False
End Sub
実行結果


Sample2:グループ化を解除する
Sub Sample2()
ActiveSheet.Select
End Sub
実行結果


WorksheetオブジェクトやRangeオブジェクトのPrintPreviewメソッド
オブジェクト.PrintPreview
印刷プレビューを実行するには、WorksheetオブジェクトやRangeオブジェクトのPrintPreviewメソッドを利用します。これは、PrintOutメソッドで引数Preview:=Trueを指定した場合と同じ動作になります。PrintPreviewメソッドでは、印刷部数やページ数などは指定できませんので、それらを指定したい場合はPrintOutメソッドを利用しましょう。
なお、Excel 2010以降の標準機能では、「ファイル」タブをクリックしたときに表示される画面(Backstageビューと呼びます)に印刷プレビューを表示しますが、PrintPreviewメソッドやPrintOutメソッドから印刷プレビューを表示した場合、図のような「印刷プレビュー」タブに表示されます。
PrintPreviewメソッドやPrintOutメソッドで表示する印刷プレビューの画面

‘Sample1:アクティブシートを印刷プレビュー
Sub Sample1()
ActiveSheet.PrintPreview
End Sub
‘Sample2:PrintOutメソッドを使ってアクティブシートを印刷プレビュー
Sub Sample2()
ActiveSheet.PrintOut Preview:=True
End Sub
W o r k s h e e tオブジェクトのPrintOutメソッド
オブジェクト.PrintOut
シートを印刷するには、W o r k s h e e tオブジェクトのPrintOutメソッドを使います。引数を明記することで、印刷ページ数、印刷部数などを指定できます。RangeオブジェクトやWorkbookオブジェクトにもPrintOutメソッドがあります。そこで、特定のセル範囲だけを印刷したり、ブック全体を印刷したりできます。
表●PrintOutメソッドの主な引数
Copies |
印刷部数。省略すると1部のみ印刷する |
From |
印刷を開始するページ数 |
To |
印刷を終了するページ数 |
Preview |
印刷を実行する前にプレビューを表示するにはTrueを指定する |
Collate |
部単位で印刷する場合はTrueを指定する |
Sample1:アクティブシートを2部ずつ部単位で印刷する
Sub Sample1()
ActiveSheet.PrintOut Copies:=2, Collate:=True
End Sub
Sample2:A1 ~ C4セルの特定の範囲だけを印刷する
Sub Sample2()
Range(“A1:C4”).PrintOut
End Sub
Sample3:アクティブブックの1 ~ 3ページ目を印刷する
Sub Sample3()
ActiveWorkbook.PrintOut From:=1, To:=3
End Sub
WorksheetオブジェクトのDeleteメソッド
シート.Delete
シートを削除するには、WorksheetオブジェクトのDeleteメソッドを実行します。それ自体は簡単ですが、厄介なのは、削除時に毎回表示される「シートを削除すると元に戻せません。」という警告のダイアログです。これが表示されると、マクロがいったん停止してしまいます。
この警告ダイアログが表示されないようにするには、ApplicationオブジェクトのDisplayAlertsプロパティにFalseを指定します。すると、アプリケーションが表示する確認メッセージなどが表示されなくなります。シートを削除した後は、DisplayAlertsプロパティをTrueに戻しておきましょう。
シート削除時に表示される警告ダイアログ
アクティブシートを、警告ダイアログを表示せずに削除する
Sub Sample()
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End Sub
実行結果


WorksheetオブジェクトのCopyメソッド
シート.Copy Before:=シート / After:=シート
シートをコピーするには、WorksheetオブジェクトのCopyメソッドを実行します。引数のBeforeまたはAfterで、コピーする位置を指定することができます。特定のシートの左側に挿入するにはBefore、右側に挿入するにはAfterを用います。シートをコピーすると、コピーされたシートがアクティブシートになります。
なお、引数BeforeまたはAfterを指定しないと、新規ブックにシートをコピーします。
Sample1:アクティブシートを、ブックの一番左端にコピーする
Sub Sample1()
ActiveSheet.Copy Before:=Sheets(1)
End Sub
実行結果


Sample2:アクティブシートをコピーして新規ブックを作成
Sub Sample2()
ActiveSheet.Copy
End Sub
実行結果


WorksheetsコレクションのAddメソッド
Worksheets.Add Before:=シート / After:=シート
シートを挿入するには、WorksheetsコレクションのAddメソッドを利用します。特定のシートの左側に挿入するには引数Before、右側に挿入するには引数Afterを使って指定します。
ブックの一番左端に挿入するときは、現時点で一番左端のシートを意味するSheets(1)を使い、Before:=Sheets(1)と指定すればOKです。
一番右端に挿入するときは、After:=Sheets(Sheets.Count)とします。Sheets.Countでブック内の総シート数を数えて、これをSheetsコレクションのインデックスに指定すれば、現時点での一番右端のシートを指定できます。
Sample1:Sheet2の左側に新規シートを挿入する
Sub Sample1()
Worksheets.Add Before:=Sheets(“Sheet1”)
End Sub
実行結果


Sample2:ブックの一番右端に新規シートを挿入する
Sub Sample2()
Worksheets.Add After:=Sheets(Sheets.Count)
End Sub
実行結果

