Excel VBA質問箱 IV

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

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


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

【52479】フォルダー名の取得 07/11/15(木) 14:16 質問[未読]
【52481】Re:フォルダー名の取得 じゅんじゅん 07/11/15(木) 14:33 発言[未読]
【52486】Re:フォルダー名の取得 07/11/15(木) 15:42 お礼[未読]
【52483】Re:フォルダー名の取得 Jaka 07/11/15(木) 14:49 発言[未読]
【52487】Re:フォルダー名の取得 07/11/15(木) 15:53 お礼[未読]
【52488】Re:フォルダー名の取得 07/11/15(木) 15:58 お礼[未読]

【52479】フォルダー名の取得
質問    - 07/11/15(木) 14:16 -

引用なし
パスワード
   たびたびすいません。
親フォルダーの下の子フォルダー名を取得するマクロを作成したんですが
不可解な現象が起きました。理由を教えて頂きたく投稿しました。

『作成コードと問題点』
親フォルダーの下の各種ファイルは対象外としています。

下記コードの
   If i >= 3 Then   というコードは当初設定していませんでした。
設定前の、Msgboxの表示は
(空欄)→(空欄)→「正しいフォルダー名」→「正しいフォルダー名」・・以下省略
となり、他の親ホルダーでも、最初の2回が表示されませんでした。

『疑問点』
取りあえず、3個目からのフォルダー名を表示するようにして問題解決していますが
なぜ最初から「正しいフォルダー名」が取得できないのかが分りません。
前記現象の理由と、最初から表示する(i=1で)方法を教えていただきたく投稿しました。
(現状ではカウンター「i」を利用する時も「2」ずれるため、ちょっと不便です)
宜しくお願いします。

Sub Folder検索()

 Dim FolderName As String
 Dim i As Integer
 Dim myFile As String
 
 i = 1
 
 FolderName = Dir("C:\My Documents\日本史\", vbDirectory)
 
 Do While FolderName <> ""
 If i >= 3 Then            '← 問題の解決策
  myFile = FolderName Like "*.*"
    If myFile = False Then
      MsgBox FolderName
    End If
  End If
  FolderName = Dir()
  
  i = i + 1
 Loop
End Sub


『実験』
因みに、最初の行を
FolderName = Dir("C:\My Documents\日本史\", vbNormal)
としたら、『最初から』ファイル名は表示されていました。

【52481】Re:フォルダー名の取得
発言  じゅんじゅん  - 07/11/15(木) 14:33 -

引用なし
パスワード
   ▼岳 さん:
>Sub Folder検索()
>
> Dim FolderName As String
> Dim i As Integer
> Dim myFile As String
  Dim myFile As Integer
> 
> i = 1
> 
> FolderName = Dir("C:\My Documents\日本史\", vbDirectory)
> 
> Do While FolderName <> ""
>  myFile = FolderName Like "*.*"
   myFile = InStr(FolderName, ".")
>    If myFile = False Then
     If myFile = 0 Then
>      MsgBox FolderName
>    End If
>  FolderName = Dir()
>  
>  i = i + 1
> Loop
>End Sub
とか?

【52483】Re:フォルダー名の取得
発言  Jaka  - 07/11/15(木) 14:49 -

引用なし
パスワード
   ヘルプにはこんな感じで書いてありましたけど。
(ヘルプを修正したのかも、いつの時代のメモなのか忘れたけど)

Sub フォルダ名出力()            'ヘルプより
  'パスを設定します。
  MyPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
  MyName = Dir(MyPath, vbDirectory)       ' 最初のフォルダ名を返します。
  Do While MyName <> ""              ' ループを開始します。
    '現在のフォルダと親フォルダは無視します。
    If MyName <> "." And MyName <> ".." Then
     'ビット単位の比較を行い、MyName がフォルダかどうかを調べます。
     If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
       'フォルダであれば、それを表示します。
       G = G + 1
       Cells(G, 1).Value = MyName
     End If
    End If
    MyName = Dir          ' 次のフォルダ名を返します。
  Loop
End Sub

【52486】Re:フォルダー名の取得
お礼    - 07/11/15(木) 15:42 -

引用なし
パスワード
   ▼じゅんじゅん さん:
早速の回答ありがとうございました。
問題解決!! ズバリの動きでした。

じゅんじゅんさんの回答、いつも参考にさせて頂いています。
本当に有難うございます。

【52487】Re:フォルダー名の取得
お礼    - 07/11/15(木) 15:53 -

引用なし
パスワード
   ▼Jaka さん:たびたびスイマセン。

試してみたら、上位階層のフォルダー名が取得できました。
(Desktopの処を変更しました・・中身はよく理解していません)

他に利用できそうなので、いろいろいじって参考にさせて頂きます。
いつも有難うございます。

じゅんじゅんさんのご教授で問題解決しましたの
このスレッド閉じさせてもらいます。

【52488】Re:フォルダー名の取得
お礼    - 07/11/15(木) 15:58 -

引用なし
パスワード
   ▼Jaka さん:たびたびスイマセン。

試してみたら、上位階層のフォルダー名が取得できました。
(Desktopの処を変更・・・中身よく分っていません)

他に利用できそうなので、色々いじって参考にさせて頂きます。
いつも本当に有難うございます。

じゅんじゅんさんのご教授で問題解決しましたので
このスレッド閉じさせて頂きます。

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