Excel VBAエキスパート資格・スタンダード試験対策の問題集に出題している「ファイル操作」の解説ページです。
目次
Excel VBA Openメソッド
Excel VBAのフィル操作は、ブックを開く、保存、コピー、フォルダー操作などに使います。
Workbooks.Openメソッドは、ファイルパスを指定して新しいワークブックを開きます。ファイルパスは、ワークブックの場所とファイル名を含む文字列で指定します。
Sub OpenWorkbookExample()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\User\Desktop\新しいフォルダー\新規 Microsoft Excel ワークシート.xlsx") ' ファイルのパスを指定
' ワークブックを開いた後、何らかの処理を行う
Debug.Print "ワークブックが開かれました。"
' ワークブックを閉じる(保存せずに閉じる)
wb.Close False ' Falseを指定して変更を保存せずに閉じる
End Sub
Workbooks.Openメソッドを使用して、指定されたファイルパスにあるワークブックを開きます。ワークブックを開いた後に、必要な処理を実行し、最後にCloseメソッドを使用してワークブックを閉じています。
存在しないファイルパスを指定するとエラーが発生します。
複数ブックの指定ファイルパスを参照してOpenする場合、複数ブックの指定ファイルパスが記述されているのがThisWorkbookであれば問題ありません。
記述されているのがWorkbooks指定の場合、Openで開いたブックがアクティブになるため、参照できません。Workbooks指定は、参照先記述のブックをアクティブにする必要があります。
Excel VBA SaveAsメソッド
SaveAsメソッドは、現在のワークブックに名前を付けて保存する際に使用します
Sub SaveWorkbookWithDate()
Dim currentDate As String
currentDate = Format(Date, "yyyymmdd") ' 現在の日付をyyyymmdd形式にフォーマット
' 現在のワークブックを日付を付けて保存
ActiveWorkbook.SaveAs "C:\Users\User\Desktop\新しいフォルダー\" & "MyWorkbook_" & currentDate & ".xlsx"
End Sub
Format関数を使用して現在の日付を"yyyymmdd"形式にフォーマットし、その日付を含むファイル名でワークブックを保存しています。`SaveAs`メソッドを使用で、ワークブックに名前を付けて保存できます。
Excel VBA FileCopyステートメント
FileCopyステートメントはフォルダーの保存されているファイルをコピーするときに使います。
FileCopy "元のファイルパスとファイル名", "コピー先のファイルパスとファイル名"
コピー先のファイル名は、元のファイル名と異なる名前の指定ができます。
・コピー先のファイルが存在している場合、確認メッセージなしで上書きします。
・存在しないフォルダーへのコピーはエラーになります。
・ファイルが読み取り専用の場合、コピーできません。
Sub CopyFileExample()
Dim sourceFilePath As String
Dim destinationFilePath As String
' コピー元とコピー先のファイルパスを指定
sourceFilePath = "C:\Users\User\Desktop\新しいフォルダー\MyWorkbook_20231211.xlsx"
destinationFilePath = "C:\Users\User\Desktop\新しいフォルダー (2)\bkup_20231211.xlsx"
' ファイルをコピー
FileCopy sourceFilePath, destinationFilePath
End Sub
Excel VBA MkDirステートメント
MkDirは、指定されたパスに新しいフォルダーを作成します。
・同じ名前のフォルダーが既に存在する場合、エラーになります。
・存在しないパスを指定した場合、エラーになります。
Sub CreateFolderExample()
Dim folderPath As String
folderPath = "C:\Users\User\Desktop\Folder\" ' 作成したいフォルダーのパスを指定
' フォルダーを作成
MkDir folderPath
End Sub
MkDirを使用して folderPath で指定されたパスに新しいフォルダーを作成しています。フォルダーの作成に成功すると、指定されたパスに新しい空のフォルダーが作成されます。
ファイル操作|記憶定着問題集
操作方法:1.●●●をクリック(スマホはタップ)で答え表示。2.答えをクリック(スマホはタップ)で●●●表示。1⇔2を繰り返すことで、記憶を定着できます。
Workbooks.●●●メソッドは、ファイルパスを指定して新しいワークブックを開きます。ファイルパスは、ワークブックの場所とファイル名を含む文字列で指定します。
Sub OpenWorkbookExample()
Dim wb As Workbook
Set wb = Workbooks.●●●("C:\Users\User\Desktop\新しいフォルダー\新規 Microsoft Excel ワークシート.xlsx") ' ファイルのパスを指定
' ワークブックを開いた後、何らかの処理を行う
Debug.Print "ワークブックが開かれました。"
' ワークブックを閉じる(保存せずに閉じる)
wb.●●● ' Falseを指定して変更を保存せずに閉じる
End Sub
存在しないファイルパスを指定するとエラーが発生します。
複数ブックの指定ファイルパスを参照してOpenする場合、複数ブックの指定ファイルパスが記述されているのが●●●であれば問題ありません。
記述されているのが●●●指定の場合、Openで開いたブックが●●●になるため、参照できません。Workbooks指定は、参照先記述のブックを●●●にする必要があります。
●●●メソッドは、現在のワークブックに名前を付けて保存する際に使用しますSub SaveWorkbookWithDate()
Dim currentDate As String
currentDate = Format(Date, "yyyymmdd") ' 現在の日付をyyyymmdd形式にフォーマット
' 現在のワークブックを日付を付けて保存
ActiveWorkbook.●●● "C:\Users\User\Desktop\新しいフォルダー\" & "MyWorkbook_" & currentDate & ".xlsx"
End Sub
・●●●のファイルが存在している場合、確認メッセージなしで上書きします。
・●●●フォルダーへのコピーはエラーになります。
・ファイルが●●●の場合、コピーできません。
Sub CopyFileExample()
Dim sourceFilePath As String
Dim destinationFilePath As String
' コピー元とコピー先のファイルパスを指定
sourceFilePath = "C:\Users\User\Desktop\新しいフォルダー\MyWorkbook_20231211.xlsx"
destinationFilePath = "C:\Users\User\Desktop\新しいフォルダー (2)\bkup_20231211.xlsx"
' ファイルをコピー
●●● sourceFilePath, destinationFilePath
End Sub
MkDirは、指定されたパスに新しいフォルダーを作成します。
・同じ名前のフォルダーが●●●に存在する場合、エラーになります。
・●●●を指定した場合、エラーになります。
Sub CreateFolderExample()
Dim folderPath As String
folderPath = "C:\Users\User\Desktop\Folder\" ' 作成したいフォルダーのパスを指定
' フォルダーを作成
●●● folderPath
End Sub
Excel VBAのスキルを活かして、仕事の効率化に貢献しませんか?
当サイトでは、Excel VBAエキスパート認定資格取得に向けた情報を提供しています。興味がある方は、ぜひ以下の問題集からチャレンジしてみてください。
ExcelVBAエキスパートスタンダードは、業務効率をあげるためにExcelVBAを利用する人が対象の問題集です。