Excel VBA質問箱 IV

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

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


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

【32126】ネットワーク上のフォルダが認識できない まめ 05/12/6(火) 19:16 質問[未読]
【32133】Re:ネットワーク上のフォルダが認識できない ichinose 05/12/6(火) 21:19 発言[未読]
【32134】Re:ネットワーク上のフォルダが認識でき... ponpon 05/12/6(火) 21:31 発言[未読]
【32135】Re:ネットワーク上のフォルダが認識でき... ponpon 05/12/6(火) 21:38 発言[未読]
【32136】Re:ネットワーク上のフォルダが認識できない Kein 05/12/6(火) 21:42 回答[未読]
【32190】Re:ネットワーク上のフォルダが認識できない まめ 05/12/8(木) 16:25 お礼[未読]

【32126】ネットワーク上のフォルダが認識できない
質問  まめ  - 05/12/6(火) 19:16 -

引用なし
パスワード
   ネットワーク上のフォルダが存在しているかを調べたいのですが、
フォルダが存在しないという結果になってしまいます。
ネットワーク上のフォルダでも、認識できるフォルダと認識できないフォルダが
あるようで、特にネットワークを経由して、自分のPCにある共有フォルダを
認識することができません。
Excelでハイパーリンクを設定すると開くことができるのですが。

以下のように書いて処理を行っています。
If Dir(Cells(D, 8), vbDirectory) = "" Then

Cells(D, 8)には、\\<コンピュータ名>\tempと入力されています。

ネットワーク上のどのようなフォルダでも認識できるようにするには
どうしたらよいのでしょうか?

ご存知の方、教えて下さい。

【32133】Re:ネットワーク上のフォルダが認識でき...
発言  ichinose  - 05/12/6(火) 21:19 -

引用なし
パスワード
   ▼まめ さん:
こんばんは。


>ネットワーク上のフォルダが存在しているかを調べたいのですが、
>フォルダが存在しないという結果になってしまいます。
>ネットワーク上のフォルダでも、認識できるフォルダと認識できないフォルダが
>あるようで、特にネットワークを経由して、自分のPCにある共有フォルダを
>認識することができません。
>Excelでハイパーリンクを設定すると開くことができるのですが。
>
>以下のように書いて処理を行っています。
現象確認しました。

FSOを使用すると「共有フォルダ」も認識できましたよ!!


Sub exist_folder()
  MsgBox CreateObject("Scripting.FileSystemObject").FolderExists("\\<コンピュータ名>\temp")
  
  
End Sub

で確認して下さい。
存在していればTrue、存在しなければFalseです。
そのほかにもFsoを使用すれば、このフォルダ下のファイル情報も取得できます。

【32134】Re:ネットワーク上のフォルダが認識でき...
発言  ponpon  - 05/12/6(火) 21:31 -

引用なし
パスワード
   こんばんは。

>Cells(D, 8)には、\\<コンピュータ名>\temp
Dが変数なら別ですが、Cells(8,"D")の間違いでは?

Cells(8,"D")には、\\<コンピュータ名>\temp\
「\」もいるのでは?                      
違ったらごめんなさい。

Dir(Cells(8,"D"), vbDirectory) としただけでは、ファイルがなければよいのですが、フォルダだけでなくファイルも取得されます。

ヘルプでは、取得したものがフォルダかどうかを判定しているようですが・・・

Sub test()
  Dim myFol As String
  Dim myPath
  Dim mAry() As Variant
  
  myPath = Cells(8, "D").Text & "\"
  myFol = Dir(myPath, vbDirectory)
   Do While myFol <> ""
    If myFol <> "." And myFol <> ".." Then
     If GetAttr(myPath & myFol) = vbDirectory Then ’←ここ
      Debug.Print myFol
     End If
   
    End If
    myFol = Dir
   Loop
End Sub

FSOのGetfolderのほうがいいかもしれません。

Sub FSOtest()
  Dim FSO As Object
  Dim myPath As String
  Dim myFolders As Object
  Dim myFol As Object
 
  Set FSO = CreateObject("Scripting.FileSystemObject")
 
  myPath = Cells(8, "D").Text
  Set myFolders = FSO.GetFolder(myPath).subfolders
  If myFolders.Count <> 0 Then
   For Each myFol In myFolders
    Debug.Print myFol.Name
   Next
  Else
  MsgBox "フォルダはありません"
  End If
End Sub

【32135】Re:ネットワーク上のフォルダが認識でき...
発言  ponpon  - 05/12/6(火) 21:38 -

引用なし
パスワード
   意味を取り違えていました。
捨ててください。

【32136】Re:ネットワーク上のフォルダが認識でき...
回答  Kein  - 05/12/6(火) 21:42 -

引用なし
パスワード
   Sub Check_Fol()
  Dim FSO As Object
  Dim MyCk As String
  Const NtPath As String = "\\Computername\e"
  '↑正確なパスに変更すること。以下の My Documents も同様
 
  Set FSO = CreateObject("Scripting.FileSystemObject")
  If FSO.GetDrive(NtPath).IsReady Then
   MyCk = IIf(FSO.FolderExists(NtPath & "\My Documents"), _
   "有り", "無し")
   MsgBox NtPath & "\My Documents は " & MyCk
  End If
  Set FSO = Nothing
End Sub

で、どうでしょーか ?

【32190】Re:ネットワーク上のフォルダが認識でき...
お礼  まめ  - 05/12/8(木) 16:25 -

引用なし
パスワード
   ご連絡が遅くなりました。
ほかにもいろいろと調べてみたのですが、
以下の方法でなんとか処理することができました。

Dim myFSO As Object
Set myFSO = CreateObject("Scripting.FileSystemObject")
If myFSO.FolderExists(Cells(D, 8)) = False Then

皆様、ありがとうございました。

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