Excel VBA質問箱 IV

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

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


6366 / 76734 ←次へ | 前へ→

【75969】Re:exvel2013でのFileSearchの代替について
発言  kanabun  - 14/8/13(水) 9:40 -

引用なし
パスワード
   ▼佐藤小次郎 さん:

>  Public WK_Name  As String'ワーク用イベント一覧名(ファイル名)
>  Public WK_Path  As String ' ワーク用イベント一覧のフルパス名

>  Public Cnt(60)  ' カウンタの配列(イベント表検索にて使用)

>  Public i, j, k                ' 添字エリア
>
>Sub Auto_Open()

ぼくは Cnt(0) って何ですか?と聞いたのですから、〜用カウンタの配列
で Cnt(0) には 通常 5〜10くらいのカウンタが入っています... とか、
そういうことが知りたかったのですが。

元の Function File_Search() を
Function File_Search_Old()
とかに名前を変えてから、
以下の あたらしい Function File_Search() を挿入して、
試してみてください。

このコードは
ht tp://www.vbalab.sakura.ne.jp/vbaqa/c-board.cgi?cmd=one;no=74578;id=excel
を参考に、DirコマンドによりFileSearch代替処理を行っています。

Function File_Search()     'Dirコマンドによるファイル検索
  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
  
  Open_SW = "OK"
  j = cnt(0)
  Do Until j = 0
    LookIn = Left(TL_Path, cnt(j)) '検索するフォルダ
    SearchSubFolders = True     'Sub Folderも検索する
    Filename = WK_Name       '検索するファイル名
    If Right$(LookIn, 1) <> "\" Then LookIn = LookIn & "\"
 
  '---- Dirコマンドによるサブフォルダを含むファイル名の検索
    Filename = LookIn & Filename
    tmpPath = Environ$("Temp") & "\Dir.tmp" '一時ファイルパス

    sCmd = "DIR """ & LookIn & Filename & """ /b/s/a:-D > """ _
        & tmpPath & """"  '' /b ファイル名のみ
                  '' /s サブディレクトリも検索
            '' /a:-D サブディレクトリー名は表示しない
           
    'Dirコマンド実行(tmpファイルに出力)
    With CreateObject("WScript.Shell")
      ng = .Run("CMD /C " & sCmd, 7, True)
    End With
    If FileLen(tmpPath) < 2 Then ng = -10 'ファイルなし
    If ng Then
      MsgBox "【" & WK_Name & "】対象ファイルなし" & vbCr _
          & "対象ファイルを準備後、処理して下さい。"
      Open_SW = "Error"
      Exit Function
    End If

    '----- Dirコマンドで取得したファイル名を配列に格納
    Dim n As Long
    Dim io As Integer
    Dim buf() As Byte
    Dim FoundFiles() As String
    io = FreeFile()
    Open tmpPath For Binary As io
     ReDim buf(1 To LOF(io))
     Get #io, , buf
    Close io
    Kill tmpPath
    FoundFiles() = Split(StrConv(buf, vbUnicode), vbCrLf)
    n = UBound(FoundFiles) - 1
    ReDim Preserve FoundFiles(n)
    '同名ファイルが存在した場合、フォルダのパスをセット
    For i = 0 To n
      If "\" & Filename = Right$(FoundFiles(i), 17) Then
        WK_Path = FoundFiles(i)
        Exit Do
      End If
    Next
    
    j = j - 1
  Loop

End Function

Public 変数が多用されているので、
何がどう関係しているのか、サッパリ分りませんので、コードの字面だけ
Dirコマンドに置換しただけです。
うまく行くかどうかは たぶん 半々です。

それにしても

> Public i, j, k

はどうみてもおかしいですね?

9 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 発言

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