@7coAim's blog

会社員である前にITエンジニアでありたい! @7coAim

【VBA】Excel VBAで長いファイルパスを扱う

 
業務で、深い階層のフォルダ内ファイルを処理できないVBAツールがあったため、
調べました。備忘としてまとめます。
 

 
Excel VBAでは256文字(?)以上のパスを扱えないらしいです。
代わりに、FSO:ファイルシステムオブジェクト(FileSystemObject)
のショートカットパスという仕組みを利用すればいいみたいです!


 
Dim fso As New FileSystemObject
Dim shortPath As String
shortPath = fso.GetFile("えらい長いパス").ShortPath
 
Dim wb As Workbook
 
' NG
Set wb = Workbooks.Open( "C:\LongPathTest\01234567890...0123456789\01234567.xlsx" )
 
' OK
Set wb = Workbooks.Open("C:\LONGPA~1\012345~2\012345~1.XLS)
Set wb = Workbooks.Open(shortPath)
  

 
【参考リンク】
VBAで長いパスが扱えないと思ったら - knjnameのブログ
→ 一番くわしい!
 
 
VBAでファイルパスが長すぎてコピー時のエラー対策 -フォルダ内にある- Excel(エクセル) | 教えて!goo
 
・260文字以上の長いパス名を短いパス名に変える。: Windows Script Programming
 
・Dir関数の制限について|ExcelマクロVBA技術解説
 
・DIR関数で取得できない長いパスのファイル存在チェックを行う方法 | Excel VBAで○○をやる方法まとめ
 
 
 以上です!