燈明ブログ

現状は小池啓仁の応援ブログ

カレントディレクトリの求め方

VB6では、実行ファイルがあるディレクトリが、カレントディレクトリになります。
しかし、VBSやVBAでは、WSH本体やEXCEL本体のあるディレクトリが、カレントディレクトリになります。
したがって、VBスクリプト(.vbs)やEXCELブック(.xls)があるディレクトリのパス情報も必要になるケースがあります。
以下は、そのパス情報取得のスクリプトです。

VBSの場合

Dim vntCurrentDirectory
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
vntCurrentDirectory = objWshShell.CurrentDirectory
MsgBox vntCurrentDirectory
Set objWshShell = Nothing

VBAの場合

Dim vntCurrentDirectory
Dim intIdx As Integer
For intIdx = Len(ActiveWorkbook.FullNameURLEncoded) To 1 Step -1
  If Mid(ActiveWorkbook.FullNameURLEncoded, intIdx, 1) = "\" Then Exit For
Next
vntCurrentDirectory = Mid(ActiveWorkbook.FullNameURLEncoded, 1, intIdx - 1)  
MsgBox vntCurrentDirectory

VB6の場合

Dim vntCurrentDirectory
vntCurrentDirectory = CurDir