Excel VBA質問箱 IV

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

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


6357 / 76734 ←次へ | 前へ→

【75978】Re:exvel2013でのFileSearchの代替について
発言  kanabun  - 14/8/14(木) 23:05 -

引用なし
パスワード
   なんどもスミマセン m(_ _)m

また不具合が見つかりました。
主な変更は ◆か所ですが、他もあちこちブラッシュアップしてますので、
そっくり差し替えてください。

Function File_Search()  'Dirコマンドによるファイル検索(Ver.3)
  Dim LookIn As String
  Dim Filename As String
  Dim SearchSubFolders As Boolean
  Dim tmpPath As String
  Dim sCmd As String
  Dim ng As Long
  Dim j As Long
  Dim n As Long
  Dim io As Integer
  Dim buf() As Byte
  Dim ss As String
  Dim FoundFiles() As String
 
  For j = Cnt(0) To 1 Step -1
    LookIn = Left$(TL_Path, Cnt(j)) '検索するフォルダ
    SearchSubFolders = True     'Sub Folderも検索する
    Filename = WK_Name       '検索するファイル名
    If Right$(LookIn, 1) <> "\" Then LookIn = LookIn & "\"

  '---- Dirコマンドによるサブフォルダを含むファイル名の検索
    tmpPath = Environ$("Temp") & "\Dir.tmp" '一時ファイルパス

    sCmd = "DIR """ & LookIn & Filename & """ /b/s/a:-D > """ _
        & tmpPath & """"      '' /b ファイル名のみ
                  '' /s サブディレクトリも検索
            '' /a:-D サブディレクトリー名は表示しない
            Debug.Print sCmd
     
    'Dirコマンド実行(tmpファイルに出力)
    With CreateObject("WScript.Shell")
      ng = .Run("CMD /C " & sCmd, 7, True)
    End With
    If ng Then
      Select Case ng
       Case 1: ss = "パス名が不正です" & vbCr & sCmd
       Case Else: ss = "ファイル検索時にエラー発生"
      End Select
      MsgBox ss & vbCr _
       & "処理を中断します", , LookIn & Filename
      Open_SW = "Error"
      Exit Function
    End If

    If FileLen(tmpPath) < 2 Then
      'このパスでは見つからなかったとき
      Debug.Print LookIn, Filename, "→ NO FILES"
      Open_SW = "Error" '次に検索パスに飛ぶ
    Else
    '----- Dirコマンドで取得したファイル名を配列に格納
      io = FreeFile()
      Open tmpPath For Binary As io
       ReDim buf(1 To LOF(io))
       Get #io, , buf
      Close io
      Kill tmpPath
      ss = StrConv(buf, vbUnicode)
      FoundFiles() = Split(ss, vbCrLf)
      '同名ファイルが存在した場合、フォルダのパスをセット
      For i = 0 To UBound(FoundFiles) - 1
        If FoundFiles(i) Like "*" & Filename & "*" Then
          WK_Path = FoundFiles(i)
          Open_SW = "OK"  '取得成功
          Exit Function  '◆変更
        End If
      Next
    End If
  Next j
  MsgBox "【" & WK_Name & "】対象ファイルなし" & vbCr _
          & "対象ファイルを準備後、処理して下さい。"
End Function

12 hits

【75965】exvel2013でのFileSearchの代替について 佐藤 小次郎 14/8/12(火) 23:15 質問
【75966】Re:exvel2013でのFileSearchの代替について kanabun 14/8/12(火) 23:23 発言
【75967】Re:exvel2013でのFileSearchの代替について 佐藤小次郎 14/8/13(水) 0:37 質問
【75968】Re:exvel2013でのFileSearchの代替について γ 14/8/13(水) 8:27 発言
【75971】Re:exvel2013でのFileSearchの代替について 佐藤小次郎 14/8/13(水) 12:02 お礼
【75969】Re:exvel2013でのFileSearchの代替について kanabun 14/8/13(水) 9:40 発言
【75970】Re:exvel2013でのFileSearchの代替について 佐藤小次郎 14/8/13(水) 12:00 お礼
【75972】Re:exvel2013でのFileSearchの代替について kanabun 14/8/13(水) 15:05 発言
【75973】Re:exvel2013でのFileSearchの代替について 佐藤小次郎 14/8/13(水) 15:56 お礼
【75974】Re:exvel2013でのFileSearchの代替について kanabun 14/8/14(木) 17:44 発言
【75975】Re:exvel2013でのFileSearchの代替について 佐藤 小次郎 14/8/14(木) 18:52 お礼
【75976】Re:exvel2013でのFileSearchの代替について 佐藤 小次郎 14/8/14(木) 19:52 お礼
【75977】Re:exvel2013でのFileSearchの代替について kanabun 14/8/14(木) 20:37 発言
【75978】Re:exvel2013でのFileSearchの代替について kanabun 14/8/14(木) 23:05 発言

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