お世話になります。
下記コードでフォルダパスを開かせるようにしているのですが、パス内にカンマが含まれるときはうまく指定のフォルダパスを開くことができません。(エクスプローラーがデフォルトとして開く)
カンマが含まれていても開くことはできますでしょうか?
また、こういう実際開けないときにデフォルトのエクスプローラーを開かない方法はありますでしょうか…?
Private Sub btnパスへ移動_Click()
Dim testPath As String
If Not IsNull([txtフォルダパス]) Then
testPath = Me!txtフォルダパス
PathOpen (testPath)
Else
MsgBox "パスが入力されていません。"
End If
End Sub
Public Function PathOpen(freePath As String)
If IsNull(freePath) Then
MsgBox "パスが入力されていません。"
ElseIf AcDir(freePath, vbDirectory) = "" Then
MsgBox "保存しているパスが存在しません。パスを確認してください。"
Exit Function
ElseIf Not IsNull(freePath) Then
Shell "Explorer.exe " & freePath, vbNormalFocus
Else: MsgBox "パスが入力されていません。"
End If
End Function
パスにコマンドとして認識されてしまうような文字が含まれている場合はパス全体を「"」ダブルクオーテーションで囲む必要があります
半角スペースが含まれてるパスなんかもよくあるパターンですね
ありがとうございます。非常に助かりました!
ごめんなさい、、お礼を言った後に申し訳ないのですが、修正してみたところやはりうまくパス先に飛べませんでした。(今までと同じ状況)
カンマ「,」を「&」に変更したらうまく飛ぶのですが…
追記です。
①コードを直すと、以下のパスに書き換わります。
②フォルダパスを開くボタンを押したとき、フォルダは開いているようなのですが、前面に出てこないため開いたことがわかりづらい状態になっております。
あー、すみませんコードがみすってました
修正後コード
正しくは
Shell "Explorer.exe """ & freePath & """", vbNormalFocus
です
最初のコードをコピペすると
Shell "Explorer.exe """ & freePath & """, vbNormalFocus"
と自動修正が働いて、うまく動かないコードになります
やっぱり手打ち回答してるとみすりますね・・・
VBEでちゃんと確認してからなら最初のコードも
のように色分けされて、vbNormalFocusが文字列の色になってるぞおかしいってすぐわかるんですが、試してもらっているコードもこうなっていますよね?
なるほど、うまく行きました!
確かに色分けされています。全く気にしていませんでした。これからは意識するようにしたいと思います。
ありがとうございました。