[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.