我的脚本正在执行以下操作:
这是我的VBS脚本(我检索它here):
Option Explicit
Const PathMDB = "C:\Users\C8461789\Desktop\test_script"
MsgBox TriRepertoire,,"Enumération " & PathMDB
'---lister les fichiers du répertoire ---
Function TriRepertoire()
Dim fso, fichier, fileItem
Dim i, imax, z, valeur, cible, liste
Set fso = CreateObject("Scripting.FileSystemObject")
imax = 0
'début de l'énumération
For Each fichier In fso.GetFolder(PathMDB).Files
Set fileItem = fso.GetFile(fichier)
imax = imax + 1
ReDim Preserve Tableau(2, imax)
Tableau(1, imax) = Fichier.Name
Tableau(2, imax) = FileItem.DateLastModified
'---trier les fichiers par ordre décroissant de création ---
Do
Valeur = 0
For i = 1 To imax - 1
If InStr(Tableau(1,i), "average", vbTextCompare) > 0 Then
If CDate(Tableau(2, i)) < CDate(Tableau(2, i + 1)) Then
For z = 1 To 2
Cible = Tableau(z, i)
Tableau(z, i) = Tableau(z, i + 1)
Tableau(z, i + 1) = Cible
Next
Valeur = 1
End If
End If
Next
Loop While Valeur = 1
Set fileItem = nothing
Next
'Affichage du résultat classé
For i = 1 To imax
'If IsNull(Tableau) Then
liste = liste &vbTab& Tableau(1, i) &vbCr
'End If
Next
TriRepertoire = liste
Set fso = nothing
End Function
为了按名称过滤我检索到的文件,我想添加以下条件:
我尝试使用
如果InStr(Tableau(1,i),&#34; average&#34;,vbTextCompare)&gt; 0然后
答案 0 :(得分:4)
您错误地使用了InStr
。你的代码:
InStr(Tableau(1,i), "average", vbTextCompare)
InStr
的签名是:
InStr([start,]string1,string2[,compare])
但问题在于它有两个可选参数,其中一个在前面,有一个特殊条件:
可选。指定每次搜索的起始位置。默认情况下,搜索从第一个字符位置(1)开始。 如果指定了比较,则此参数是必需的
因为您使用的值为vbTextCompare
的第四个参数,您还需要在第一个参数中指定起点,在您的情况下为1
(第一个字符)。因此,更正的代码是:
InStr(1, Tableau(1,i), "average", vbTextCompare)
您看到的错误消息基本上抱怨第一个参数应该是一个整数,但是您正在为它提供一个字符串。
请参阅InStr docs。