VBA编程 遍历某个制定文件下的多个制定类型文档,并对每个文档制定列进行计算 怎样实现
如 在cell(1,2)对应的指定路径下,遍历其路径下所有cell(2,2)单元格指定的文档类型(只有xls 或csv),并对每个文档指定位置列进行计算:如xls表sheet1 第N列(原本为空值列)数据 等于 sheet1 中第L列数据(非空值列)乘以常数86400。N列数据计算保留后保存,并退出。另第L列数据 原本为hh:mm:ss 格式,需要N列的数据以整数值(即绝对时间秒)形式显示。附件1为文档处理前状态, 附件2为文档处理后状态。
我的主要代码如下(本人小白):
Private Sub 执行_Click()
'On Error Resume Next
Dim filepath As String, filename As String, fltype As String, i As Integer, n As Integer
Dim Arr(1000) As String
Dim count As Integer
'Dim FS As FileSearch '定义一个文件搜索对象
'Set FS = Application.FileSearch
'FS.LookIn = Sheet1.Cells(1, 2) '注意路径,换成你实际的路径
'FS.Execute '执行搜索
filepath = Sheet1.Cells(1, 2) & "\"
fltype = "*." & Sheet1.Cells(2, 2)
filename = Dir(filepath & fltype, vbDirectory)
count = count + 1
Arr(count) = filename
Do While filename <> ""
Sheet1.Cells(i + 7, 1) = Replace(filename, "." & Sheet1.Cells(2, 2), "")
i = i + 1
filename = Dir
Loop
Sheet1.Cells(3, 2) = i - 1
For i = 1 To FS.FoundFiles.count
Workbooks.Open filename:="D:\data deal\试验\" & Arr(i) '循环打开Excel文件
For n = 1 To Application.count(ActiveSheet.Range("L65536").End(xlUp).Row) '取L列不为空值的总行数,作为循环总数
ActiveSheet.Cells(n, 14) = ActiveSheet.Cells(n, 12) * 86400
ActiveSheet.Save
Next n
ActiveWorkbook.Close savechanges = True '关闭打开的文件
Next i
MsgBox "已处理完成!"
End Sub
下述附件1 是试验用的excel文档,附件3是编程的excel文件。
[local]1[/local][local]3[/local]
[此贴子已经被作者于2019-5-15 11:04编辑过]