如何为文件夹中的excel VBA循环文件编写程序,并在单元格中查找特定文本,如果文件符合条件,则将其保存在另一个文件夹中
例如,文件夹中有一些文件,文件夹中有循环文件,如果文本与单元格匹配,它应该在指定的单元格中搜索特定的文本。文件应该保存在指定的路径中如何为文件夹中的excel VBA循环文件编写程序,并在单元格中查找特定文本,如果文件符合条件,则将其保存在另一个文件夹中,excel,vba,Excel,Vba,例如,文件夹中有一些文件,文件夹中有循环文件,如果文本与单元格匹配,它应该在指定的单元格中搜索特定的文本。文件应该保存在指定的路径中 This line am getting error"If Range("A6").Value = ("CORE SKUS ONLY: N").Value & If Range("A7").Value =("ECO SKUS ONLY: Y").Value Then {{{{Sub OpenLatestFile() Dim MyPath作为字符串 将
This line am getting error"If Range("A6").Value = ("CORE SKUS ONLY: N").Value & If Range("A7").Value =("ECO SKUS ONLY: Y").Value Then
{{{{Sub OpenLatestFile()
Dim MyPath作为字符串
将MyFile设置为字符串
将最新文件设置为字符串
将LatestDate变为Date
变光范围
作为字符串的Dim stresearch
strSearch=“仅限核心库存单位”
Dim LMD作为日期
MyPath=“C:\Users\p\u Divyanka\Desktop\Divyanka\Vendor Metrics\US”
如果正确(MyPath,1)“\”则MyPath=MyPath&“\”
MyFile=Dir(MyPath&“RptLineItemFillRate.*.xls”,vbNormal)
如果Len(MyFile)=0,则
MsgBox“未找到任何文件…”,请使用感叹号
出口接头
如果结束
当Len(MyFile)>0时执行
LMD=FileDateTime(MyPath&MyFile)
如果LMD>最晚日期,则
LatestFile=MyFile
LatestDate=LMD
如果结束
MyFile=Dir
环
工作簿。打开MyPath和LatestFile
Windows(“RptLineItemFillRate.*.xls”)。激活
活动窗口
如果范围(“A6”)。值=(“仅限核心库存单位:N”)。值&如果范围(“A7”)。值=(“仅限生态库存单位:Y”)。则值
Windows(“RptLineItemFillRate.*.xls”)。激活
ChDir“C:\Users\p\u Divyanka\Desktop\Divyanka\Vendor Metrics\US\FY2018\ING”
ActiveWorkbook.SaveAs文件名:=_
“C:\Users\p\u Divyanka\Desktop\Divyanka\Vendor Metrics\US\FY2018\ING\US\u ING\u Aged\u Detail.xls”_
,文件格式:=xlExcel8,密码:=“”,WriteResPassword:=“”_
ReadOnlyRecommended:=False,CreateBackup:=False
活动窗口,关闭
其他的
活动窗口,关闭
如果结束
结束子}}}}
这是VBS,因此可以粘贴到VBA中
'Remove next line in VBA
Main
Sub Main
'On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Dirname = InputBox("Enter Dir name (don't use quotes)")
Searchterm = Inputbox("Enter search term")
ProcessFolder DirName
End Sub
Sub ProcessFolder(FolderPath)
' On Error Resume Next
Set fldr = fso.GetFolder(FolderPath)
Set Fls = fldr.files
For Each thing in Fls
If Instr(LCase(thing.OpenAsTextStream.ReadAll), LCase(SearchTerm)) > 0 then
msgbox Thing.Name & " " & Thing.path
'fso.copyfile thing.path, "C:\backup"
End If
Next
Set fldrs = fldr.subfolders
For Each thing in fldrs
ProcessFolder thing.path
Next
End Sub
到底是什么问题?请更详细地描述您的问题。您想删除问题行中的第二个
IF
。在VBA中,IF
和Then
是应用程序识别条件的“标记”。如果在一个之前有两个,则会混淆应用程序。此外,对于逻辑条件,请使用和
而不是&
&
主要用于连接字符串。
'Remove next line in VBA
Main
Sub Main
'On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Dirname = InputBox("Enter Dir name (don't use quotes)")
Searchterm = Inputbox("Enter search term")
ProcessFolder DirName
End Sub
Sub ProcessFolder(FolderPath)
' On Error Resume Next
Set fldr = fso.GetFolder(FolderPath)
Set Fls = fldr.files
For Each thing in Fls
If Instr(LCase(thing.OpenAsTextStream.ReadAll), LCase(SearchTerm)) > 0 then
msgbox Thing.Name & " " & Thing.path
'fso.copyfile thing.path, "C:\backup"
End If
Next
Set fldrs = fldr.subfolders
For Each thing in fldrs
ProcessFolder thing.path
Next
End Sub