[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAのShell関数のパス名の長さについて』(なお)
EXCELL VBAの中にshell関数を使っているのですが
ここの中に入れるパス名を変数にしていろいろ入れるのですが 長いパス名に限りエラーになるように思われます。 最大のパス名の長さの制限はあるのでしょうか。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
長いパスへの対応ですが、途中までのパスをドライブマッピングしておき、ドライブ名指定で利用することができると思います。 パス名を短く変更することが許されない場合、お試しください。
(???) 2018/04/12(木) 16:00
???さんのコメント見てて思い出したんですが、依然仕事上で同じような問題が発生したため、 その時に問題解決に使用したマッピングと解除のコードを載せておきます。 Sub TEST1() Dim Ltr As String Ltr = FreeDrive Call MapNWDrive(Ltr, "\\長いパス") MsgBox Ltr & " に割り当てました。" End Sub
Sub TEST2() Call RmNWDrive("M") End Sub
Private Function FreeDrive() As String '空きのドライブレターを検索 Dim Idx Dim DvLet Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") For Idx = 3 To 26 DvLet = Chr(64 + Idx) If Not FSO.DriveExists(DvLet) Then FreeDrive = DvLet Set FSO = Nothing Exit Function End If Next Set FSO = Nothing Call FreeDrive End Function
Private Sub MapNWDrive(DriveLtr As String, Path As String) '仮想・NWドライブの割り当て Dim WSHNet Dim WSH If Left(Path, 1) = "\" Then Set WSHNet = CreateObject("WScript.Network") WSHNet.MapNetworkDrive DriveLtr & ":", Path DriveFlg = False Else Set WSH = CreateObject("WScript.Shell") WSH.Run "%ComSpec% /c subst " & DriveLtr & ": " & "" & Path & "", 0, True DriveFlg = True End If End Sub
Private Sub RmNWDrive(DriveLtr As String) 'NWドライブの解除 Dim WSHNet Dim WSH On Error Resume Next Set WSHNet = CreateObject("WScript.Network") WSHNet.RemoveNetworkDrive DriveLtr & ":", True Set WSH = CreateObject("WScript.Shell") WSH.Run "subst /d " & DriveLtr & ":", 0, True On Error GoTo 0 End Sub
TEST1がパスをマッピングするサンプル、TEST2が解除するサンプルです。 (ろっくん) 2018/04/12(木) 16:45
私は、ローカルのときは同じように SUBSTコマンドを使い、ネットワークのときは NET USEコマンドを使って、どちらも WScript.Shell によるコマンドプロンプト実行を使ってました。 WScript.Network は知りませんでした。 頭がDOS寄りだと実感。
(net use x: パス名 とかでマップ、net use x: /delete /yes とかで解除)
(???) 2018/04/12(木) 18:11
話の流れをよくつかんでませんが、参考HPです。
VBAで長いパスが扱えないと思ったら http://knjname.hateblo.jp/entry/2015/01/27/220219 (カリーニン) 2018/04/12(木) 19:13
おや、先に書かれた
タイトルの一部、「Shell関数のパス名の長さ」で検索したら、
VBAで長いパスが扱えないと思ったら - knjnameのブログ ttp://knjname.hateblo.jp/entry/2015/01/27/220219
が1ページ目に出るのですが
その下の関連する検索キーワードにも、そのままの「excel vba 長い パス」てのがあったりしますし
ついでに「最大のパス名の長さの制限」で検索したら
Windowsのファイル名最大文字数は? ttp://salaryman-life.blogspot.jp/2013/06/windows.html
がトップに来ますし パス長260文字はWindowsの制限みたいですね
(2u) 2018/04/12(木) 19:22
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.