Excel VBAエキスパート資格・スタンダード解説|ファイル操作

 

Excel VBAエキスパート資格・スタンダード試験対策の問題集に出題している「ファイル操作」の解説ページです。

 

Excel VBA Openメソッド

Excel VBAのフィル操作は、ブックを開く、保存、コピー、フォルダー操作などに使います。

 

Openメソッド

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メソッド

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ステートメントはフォルダーの保存されているファイルをコピーするときに使います。

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ステートメント

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を利用する人が対象の問題集です。