概要

CurDir関数は、VBA(Visual Basic for Applications)で現在の作業ディレクトリのパスを取得するための関数です。この関数は、ファイル操作を行う際に現在の作業ディレクトリを確認するのに便利で、特定のドライブの作業ディレクトリを取得することも可能です。

構文

CurDir([ドライブ])

パラメータ

  • ドライブ(省略可能)

    現在の作業ディレクトリを取得するドライブを指定します。指定がない場合、現在の作業ドライブのディレクトリが返されます。

使用例

基本的な使用例

現在の作業ディレクトリを取得する基本的な例を示します。

Sub GetCurrentDirectory()
    Dim currentDir As String
    ' 現在の作業ディレクトリを取得
    currentDir = CurDir
    MsgBox "現在の作業ディレクトリ: " & currentDir
End Sub

特定のドライブの作業ディレクトリを取得

特定のドライブ(例えばDドライブ)の現在の作業ディレクトリを取得する例です。

Sub GetSpecificDriveDirectory()
    Dim driveDir As String
    ' Dドライブの作業ディレクトリを取得
    driveDir = CurDir("D")
    MsgBox "Dドライブの現在の作業ディレクトリ: " & driveDir
End Sub

作業ディレクトリの変更と取得

ChDir関数と組み合わせて、ディレクトリを変更した後に現在のディレクトリを確認することができます。

Sub ChangeAndCheckDirectory()
    ' 作業ディレクトリをC:\Tempに変更
    ChDir "C:\Temp"
    ' 現在の作業ディレクトリを表示
    MsgBox "変更後の作業ディレクトリ: " & CurDir
End Sub

注意点

  • 指定したドライブが存在しない場合のエラー

    存在しないドライブやアクセス権のないドライブを指定すると、Path not foundエラーが発生します。

  • ネットワークドライブの指定に注意

    ネットワークドライブを指定する際には、そのドライブが正しくマップされている必要があります。マップされていない場合やアクセス権がない場合、エラーが発生することがあります。

  • ドライブの指定が省略された場合

    ドライブを指定しない場合、現在の作業ドライブのディレクトリが返されます。このとき、直前に使用されたディレクトリの変更が影響することがあります。

実用例

ファイルのパスを動的に生成する

現在の作業ディレクトリを利用して、ファイルのパスを動的に生成し、ファイルを開く例です。

Sub OpenFileInCurrentDirectory()
    Dim filePath As String
    ' 現在の作業ディレクトリにあるファイルを指定
    filePath = CurDir & "\example.txt"

    ' ファイルを開く
    Open filePath For Input As #1
    MsgBox "ファイルを開きました: " & filePath
    Close #1
End Sub

ディレクトリの変更が必要かどうかの確認

特定の処理前に現在の作業ディレクトリを確認し、必要に応じてディレクトリを変更する例です。

Sub CheckAndChangeDirectory()
    Dim currentDir As String
    currentDir = CurDir

    ' 必要に応じてディレクトリを変更
    If currentDir <> "C:\Work" Then
        ChDir "C:\Work"
        MsgBox "ディレクトリをC:\Workに変更しました。"
    Else
        MsgBox "現在の作業ディレクトリはC:\Workです。"
    End If
End Sub

まとめ

CurDir関数は、VBAで現在の作業ディレクトリを確認するために非常に役立つ機能です。ファイル操作時にディレクトリのパスを動的に取得したり、特定のドライブの作業ディレクトリを確認したりすることで、スクリプトの柔軟性が向上します。ただし、指定するドライブが存在するか、アクセス権限があるかに注意することが重要です。