Excel VBA質問箱 IV

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

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


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

【24719】ファイルのパス名取得方法について mitu 05/5/6(金) 8:48 質問[未読]
【24720】Re:ファイルのパス名取得方法について 小僧 05/5/6(金) 10:29 発言[未読]
【24723】Re:ファイルのパス名取得方法について mitu 05/5/6(金) 11:27 お礼[未読]
【24724】Re:ファイルのパス名取得方法について 小僧 05/5/6(金) 11:48 発言[未読]
【24739】Re:ファイルのパス名取得方法について mitu 05/5/6(金) 17:29 お礼[未読]
【24740】Re:ファイルのパス名取得方法について ちゃっぴ 05/5/6(金) 17:44 発言[未読]

【24719】ファイルのパス名取得方法について
質問  mitu  - 05/5/6(金) 8:48 -

引用なし
パスワード
   開けようとするファイル名は確定していますが、個人によってファイルの分類方法が異なり、ファイルを格納しているフォルダー名が異なるためパス名が定まりません。

仕方なく現在開いているファイルの上位フォルダーを求めて、それ以下のフォルダをDir()関数で検索することで試みたのですが、サブフォルダ、ファイルが混在していて、うまく処理ができません。

どなたか具体的な事例をご教授いただけませんでしょうか。

【24720】Re:ファイルのパス名取得方法について
発言  小僧  - 05/5/6(金) 10:29 -

引用なし
パスワード
   ▼mitu さん:
おはようございます。

目安箱にあります、ちゃっぴさんの投稿が参考になると思われます。

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=74;id=FAQ

【24723】Re:ファイルのパス名取得方法について
お礼  mitu  - 05/5/6(金) 11:27 -

引用なし
パスワード
   ▼小僧 さん:
早速のご回答有難うございました。

>目安箱にあります、ちゃっぴさんの投稿が参考になると思われます。
>
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=74;id=FAQ

私には、難しく、使用例があると助かるのですが、勉強してみます。

【24724】Re:ファイルのパス名取得方法について
発言  小僧  - 05/5/6(金) 11:48 -

引用なし
パスワード
   ▼mitu さん:
こんにちは。
【その1 FSO Version】が解りやすいと思われますので、
使用例をあげてみます。

Sub CallFilePathList1()
  Dim objFSO     As FileSystemObject
  Dim strTargetPath  As String      '対象フォルダパス
  
⇒追加
  strTargetPath = ActiveWorkbook.Path
  
  Set objFSO = New FileSystemObject
 
  Call EnumFilePathList1(objFSO.GetFolder(strTargetPath))
End Sub

'本体
Sub EnumFilePathList1(objFolder As Folder)
  Dim objTargetFile  As File
  Dim objSubFolder   As Folder
 
  'ファイル名を列挙
  For Each objTargetFile In objFolder.Files
    Debug.Print objTargetFile.Path
  Next objTargetFile
 
  'サブフォルダを検索
  For Each objSubFolder In objFolder.SubFolders
    Call EnumFilePathList1(objSubFolder)
  Next objSubFolder
End Sub

任意のエクセルの標準モジュールに上記のコードを
記載して実行させた後に、イミディエトウィンドウ
(コードを表示させた画面でCtrl + G)に
ブックと同じフォルダに存在するファイルが表示されると思います。

【24739】Re:ファイルのパス名取得方法について
お礼  mitu  - 05/5/6(金) 17:29 -

引用なし
パスワード
   ▼小僧 さん:
>【その1 FSO Version】が解りやすいと思われますので、
>使用例をあげてみます。
>
>Sub CallFilePathList1()
>  Dim objFSO     As FileSystemObject
>  Dim strTargetPath  As String      '対象フォルダパス
>  
>⇒追加
>  strTargetPath = ActiveWorkbook.Path
>  
>  Set objFSO = New FileSystemObject
> 
>  Call EnumFilePathList1(objFSO.GetFolder(strTargetPath))
>End Sub
>
>'本体
>Sub EnumFilePathList1(objFolder As Folder)
>  Dim objTargetFile  As File
>  Dim objSubFolder   As Folder
> 
>  'ファイル名を列挙
>  For Each objTargetFile In objFolder.Files
>    Debug.Print objTargetFile.Path
>  Next objTargetFile
> 
>  'サブフォルダを検索
>  For Each objSubFolder In objFolder.SubFolders
>    Call EnumFilePathList1(objSubFolder)
>  Next objSubFolder
>End Sub
>
>任意のエクセルの標準モジュールに上記のコードを
>記載して実行させた後に、イミディエトウィンドウ
>(コードを表示させた画面でCtrl + G)に
>ブックと同じフォルダに存在するファイルが表示されると思います。

ご丁寧に有難うございました。
もう少しがんばってやってみます。

【24740】Re:ファイルのパス名取得方法について
発言  ちゃっぴ  - 05/5/6(金) 17:44 -

引用なし
パスワード
   見直してみるとBugがあったので・・・

>Sub EnumFilePathList1(objFolder As Folder)

Sub EnumFilePathList1(ByVal objFolder As Folder)
           ~~~~~必要

というでお願いします。
意味は、Helpで調べてみてください。
それでも、わからなければご質問ください。

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