|
▼佐藤小次郎 さん:
> 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
はどうみてもおかしいですね?
|
|