Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8294 / 13644 ツリー ←次へ | 前へ→

【34148】パスが正しいか判断させたい ともく 06/1/27(金) 13:22 質問[未読]
【34150】Re:パスが正しいか判断させたい じゅん 06/1/27(金) 13:44 回答[未読]
【34154】Re:パスが正しいか判断させたい MARBIN 06/1/27(金) 14:12 発言[未読]
【34159】Re:パスが正しいか判断させたい ともく 06/1/27(金) 14:54 お礼[未読]
【34156】Re:パスが正しいか判断させたい ともく 06/1/27(金) 14:32 発言[未読]

【34148】パスが正しいか判断させたい
質問  ともく  - 06/1/27(金) 13:22 -

引用なし
パスワード
   テキストボックスにローカルパスを入力して入力パスで存在しないフォルダがあった場合そのフォルダを作成する
という処理を行っています。
このときテキストボックスに入力されたパスがパスとして正しいか('/'を使っていないか等)判断させたいです。
簡単に正しいか判断させる方法は無いでしょうか?

【34150】Re:パスが正しいか判断させたい
回答  じゅん  - 06/1/27(金) 13:44 -

引用なし
パスワード
   ▼ともく さん:
>テキストボックスにローカルパスを入力して入力パスで存在しないフォルダがあった場合そのフォルダを作成する
>という処理を行っています。
>このときテキストボックスに入力されたパスがパスとして正しいか('/'を使っていないか等)判断させたいです。
>簡単に正しいか判断させる方法は無いでしょうか?

つまり、フォルダが存在するか/しないかの判断が出来れば良いのですよね?
FileSystemObjectというオブジェクトに
FolderExistsメソッドというのがあります。
これで、判断することは出来ます。

下記アドレスに使用例が載っておりますので、ご参考にしてみて下さい。
http://www.officetanaka.net/excel/vba/filesystemobject/filesystemobject.htm

【34154】Re:パスが正しいか判断させたい
発言  MARBIN  - 06/1/27(金) 14:12 -

引用なし
パスワード
   私が使っているコードです。
参考になりましたら・・・。

なお、ファイル名、フォルダ名には以下の記号が使用できません。
セルに入力しておき、下記のマクロで判定しています。

/
\
<
>
*
?
|
:
;

Dim i as Long
Dim hantei As Boolean
Dim kinmoji As String
  hantei = False
  For i = 1 To Worksheets(1).Cells(65536, 1).End(xlUp).Row
   If UBound(Split(Me.TextBox1.Value, Worksheets(1).Cells(i, 1).Value)) <> 0 Then
    hantei = True
   End If
  Next i
  If hantei = True Then
    MsgBox "フォルダ名に禁則文字が含まれています。"
  End If

また、既に存在するフォルダかの判定は下記のように行っています。

Dim NewFol as string
 NewFol = Me.TextBox1.Value
 If Dir(NewFol, vbDirectory + vbReadOnly + vbHidden) = "" Then
   MkDir (NewFol)
 Else
   MsgBox Newfol "は既に存在します"
 End If

【34156】Re:パスが正しいか判断させたい
発言  ともく  - 06/1/27(金) 14:32 -

引用なし
パスワード
   じゅんさんありがとうございます。

HP見させて頂きました。
ご説明が悪かったようです。
フォルダを作成する為、下記の用なSubを作りました。
「C:\aaa\bbb\」がdlFolderPathに入ってくるのは問題なく処理されるのですが
「C:\ccc/ccc\」が入ってきたときは「MkDir makeFolderPath」の部分で
「パスが見つかりません。(Error 76)」が返ってきてしまします。
フォルダの名前として'/'が作れない為のエラーだと自分は思ったので
このSubにくる前に'/'等のフォルダの名前として付けられない文字が入ってないかValidateしたかったのです。
専門がJavaなのでVBAのことはよくわからないのですがValidate等をしないでExceptionへ飛ばし
エラーメッセージを出して処理を終了させる等させた方がいいのでしょうか?

またHPですが大変参考になりました。
拡張子を取り出すGetExtensionName等は自作してしまっていたのでこちらを使用したいと思います。

'フォルダ作成
'
'@param フォルダパス
Private Sub MakeFolder(dlFolderPath As String)
  Dim makeFolderPath As String      '作成フォルダパス
  Dim pathPosition  As Integer     'パス位置
  pathPosition = 4
  
  Do Until Len(dlFolderPath) < pathPosition
    pathPosition = InStr(pathPosition, dlFolderPath, "\")
    makeFolderPath = Left(dlFolderPath, pathPosition)
    'フォルダが無い場合、フォルダ作成
    If "" = Dir(makeFolderPath, vbDirectory) Then
      MkDir makeFolderPath
    End If
    pathPosition = pathPosition + 1
  Loop
End Sub


▼じゅん さん:
>つまり、フォルダが存在するか/しないかの判断が出来れば良いのですよね?
>FileSystemObjectというオブジェクトに
>FolderExistsメソッドというのがあります。
>これで、判断することは出来ます。
>
>下記アドレスに使用例が載っておりますので、ご参考にしてみて下さい。
>http://www.officetanaka.net/excel/vba/filesystemobject/filesystemobject.htm

【34159】Re:パスが正しいか判断させたい
お礼  ともく  - 06/1/27(金) 14:54 -

引用なし
パスワード
   MARBINさんありがとうございます。

URL判断のときはお世話になりました。
MARBINさんのソースを参考に実装させて頂きたいと思います。
これで問題が解決できそうです。
ありがとう御座いました。


▼MARBIN さん:
>私が使っているコードです。
>参考になりましたら・・・。
>
>なお、ファイル名、フォルダ名には以下の記号が使用できません。
>セルに入力しておき、下記のマクロで判定しています。
>
>/
>\
><
>>
>*
>?
>|
>:
>;
>
> Dim i as Long
> Dim hantei As Boolean
> Dim kinmoji As String
>  hantei = False
>  For i = 1 To Worksheets(1).Cells(65536, 1).End(xlUp).Row
>   If UBound(Split(Me.TextBox1.Value, Worksheets(1).Cells(i, 1).Value)) <> 0 Then
>    hantei = True
>   End If
>  Next i
>  If hantei = True Then
>    MsgBox "フォルダ名に禁則文字が含まれています。"
>  End If
>
>また、既に存在するフォルダかの判定は下記のように行っています。
>
> Dim NewFol as string
> NewFol = Me.TextBox1.Value
> If Dir(NewFol, vbDirectory + vbReadOnly + vbHidden) = "" Then
>   MkDir (NewFol)
> Else
>   MsgBox Newfol "は既に存在します"
> End If

8294 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free