在a previous posting中,我询问了如何突出显示以某个关键词开头的单元格范围,并在下一个单元格为空时结束。我想更好地了解如何创建一个循环,在多个Excel文件上执行此操作。任何帮助将非常感激。作为参考,我所指的代码如下:
Dim wk As Worksheet
Set wk = ActiveSheet
FirstRowColA = Application.WorksheetFunction.Match("keyphrase", wk.[A:A])
LastRowColA = Cells(wk.Rows.Count, "A").End(xlUp).Row
wk.Range("A" & FirstRowColA & ":A" & LastRowColA).Copy
Worksheets("Sheet2").Paste
此外,如果活动工作簿中已经不存在“工作表2”,我很好奇如何处理创建“工作表2”。我是否需要使用Set WS = Sheets.Add之类的东西并让Excel查看Worksheets(Sheets.Add).Paste?
我也注意到这段代码并不一定能找到我要告诉它的内容,但这是我应该能够解决的问题。例如,在Match()函数中添加短语“Name”将返回包含不同单词的A列中单元格的文本。
答案 0 :(得分:0)
假设您在某个文件夹中有excel文件
此代码打开文件夹中的每个工作簿,并搜索特定字符串(如果找到.copy)并粘贴所需数据。
Sub LoopThroughFiles()
Dim StrFile As String
Dim wk As Worksheet
StrFile = Dir("C:\Personal\Excel Report\*.xlsx")
Do While Len(StrFile) > 0
Workbooks.Open ("C:\Personal\Excel Report\" & StrFile)
Set wk = ActiveSheet
Set firstrowcola = activesheet.Range("A:A").Find("taskname") ' - search taskname in 1st row
If firstrowcola Is Nothing Then GoTo here:
LastRowColA = Cells(wk.Rows.Count, "A").End(xlUp).Row
wk.Range(firstrowcola.address & ":" & firstrowcola.offset(lastrowcola,0).address)).Copy
Set ws = Sheets.Add
ws.Range("A1").Select
ActiveSheet.Paste
here:
ActiveWorkbook.Close True
Loop
End Sub