我正在尝试遍历一个文件夹,查找其中包含“CUSTOMER ID”字样的所有工作簿,然后从相邻的单元格中复制(客户的名称在同一行的右侧)。客户名称与工作簿文件名一起粘贴到主工作簿中。
我找到了以下代码,它返回我正在搜索的文本。
Sub SearchFolders()
Dim fso As Object
Dim fld As Object
Dim strSearch As String
Dim strPath As String
Dim strFile As String
Dim wOut As Worksheet
Dim wbk As Workbook
Dim wks As Worksheet
Dim lRow As Long
Dim rFound As Range
Dim strFirstAddress As String
On Error GoTo ErrHandler
Application.ScreenUpdating = False
'Change as desired
strPath = "c:\MyFolder"
strSearch = "Specific text"
Set wOut = Worksheets.Add
lRow = 1
With wOut
.Cells(lRow, 1) = "Workbook"
.Cells(lRow, 2) = "Worksheet"
.Cells(lRow, 3) = "Cell"
.Cells(lRow, 4) = "Text in Cell"
Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.GetFolder(strPath)
strFile = Dir(strPath & "\*.xls*")
Do While strFile <> ""
Set wbk = Workbooks.Open _
(Filename:=strPath & "\" & strFile, _
UpdateLinks:=0, _
ReadOnly:=True, _
AddToMRU:=False)
For Each wks In wbk.Worksheets
Set rFound = wks.UsedRange.Find(strSearch)
If Not rFound Is Nothing Then
strFirstAddress = rFound.Address
End If
Do
If rFound Is Nothing Then
Exit Do
Else
lRow = lRow + 1
.Cells(lRow, 1) = wbk.Name
.Cells(lRow, 2) = wks.Name
.Cells(lRow, 3) = rFound.Address
.Cells(lRow, 4) = rFound.Value
End If
Set rFound = wks.Cells.FindNext(After:=rFound)
Loop While strFirstAddress <> rFound.Address
Next
wbk.Close (False)
strFile = Dir
Loop
.Columns("A:D").EntireColumn.AutoFit
End With
MsgBox "Done"
ExitHandler:
Set wOut = Nothing
Set wks = Nothing
Set wbk = Nothing
Set fld = Nothing
Set fso = Nothing
Application.ScreenUpdating = True
Exit Sub
ErrHandler:
MsgBox Err.Description, vbExclamation
Resume ExitHandler
End Sub
答案 0 :(得分:1)
要从“特定文本”中将单元格的值返回到右侧:
.Cells(lRow, 4) = rFound.Offset(0, 1).Value
答案 1 :(得分:0)
扩展@Tim Williams的正确建议......
找到看起来像的代码块:
$("#start_date").datepicker({
format: 'yyyy-mm-dd',
// startDate: '-3d'
autoclose: true,
endDate: '+0days'
}).on('changeDate', function(e) {
var end_date = '';
end_date = $("#start_date").val();
// var end_date2 = moment(end_date).add('1', 'days');
var date2 = '';
date2 = $('#start_date').datepicker('getDate', '+1d');
date2.setDate(date2.getDate() + 30);
$("#end_date").val(end_date).datepicker({
format: 'yyyy-mm-dd',
startDate: end_date,
autoclose: true,
endDate: date2
});
});
然后更改第四行,使其与代码匹配:
.Cells(lRow, 1) = wbk.Name
.Cells(lRow, 2) = wks.Name
.Cells(lRow, 3) = rFound.Address
.Cells(lRow, 4) = rFound.Value
这是一个方便的代码片段,可以在工具包中使用,但有时它太过沉重。一个示例是创建文件名和/或路径字符串的列表。如果不需要打开一个文件,那么打开所有文件就变得非常荒谬了。当然,应该修改此工具以更好地满足各种要求,但对于许多场景来说,这是一个更好的选择。如果在那里有任何人在搜索千个文件的内容时遇到了严峻的挑战,请记录所有产生正面点击的文件,并且您不需要打开您已识别的任何文件或者关心文件是否有一个或多个正面点击...如果那样你那么我建议使用的工具将胜过这里建议的那个被称为...... Windows。
必须将Windows配置为搜索文件内容才能使其正常工作,并且设置位于两个不同的位置。一个是“搜索”窗口的“搜索”选项卡的“高级搜索”下拉菜单中的复选框。另一个是在“文件夹选项”窗口的“搜索”选项卡中。
使用OP的示例,生成包含字符串&#34; CUSTOMER ID&#34;的所有文件名和位置的列表。只需打开资源管理器,激活搜索框,然后输入:
内容:CUSTOMER ID
搜索完成后,突出显示要包含在列表中的结果,右键单击突出显示的区域,选择复制为路径。将新生成的列表粘贴到您选择的应用程序中。是的,真的很容易。