4-02.ファイルの操作:ファイル名やフォルダー名を変えるには?

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

 

 


 

2022年9月13日

4-01.ファイルの操作:ファイルをコピーするには?

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

 

 

2022年9月13日

3-12.ブックとシートの操作:シートをPDFとして保存するには?

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の例

 

 

 

2022年9月13日

3-11.ブックとシートの操作:複数のシートを選択して印刷するには?

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が印刷されます。

2022年9月13日

3-10.ブックとシートの操作:シートをグループ化するには?

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

実行結果

 


 

2022年9月13日

3-09.ブックとシートの操作:印刷プレビューを実行するには?

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


 

2022年9月13日

3-08.ブックとシートの操作:シートを印刷するには?

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


 

2022年9月13日

3-07.ブックとシートの操作:シートを削除するには?

WorksheetオブジェクトのDeleteメソッド

シート.Delete

シートを削除するには、WorksheetオブジェクトのDeleteメソッドを実行します。それ自体は簡単ですが、厄介なのは、削除時に毎回表示される「シートを削除すると元に戻せません。」という警告のダイアログです。これが表示されると、マクロがいったん停止してしまいます。

 この警告ダイアログが表示されないようにするには、ApplicationオブジェクトのDisplayAlertsプロパティにFalseを指定します。すると、アプリケーションが表示する確認メッセージなどが表示されなくなります。シートを削除した後は、DisplayAlertsプロパティをTrueに戻しておきましょう。


シート削除時に表示される警告ダイアログ

 

アクティブシートを、警告ダイアログを表示せずに削除する

Sub Sample()

Application.DisplayAlerts = False

ActiveSheet.Delete

Application.DisplayAlerts = True

End Sub

 

実行結果

 

 

 

2022年9月13日

3-06.ブックとシートの操作:シートをコピーするには?

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

 

実行結果

 

2022年9月13日

3-05.ブックとシートの操作:指定した位置にシートを挿入するには?

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

実行結果

 

2022年9月12日