注册 登录
编程论坛 VB6论坛

VBA编程 遍历某个制定文件下的多个制定类型文档,并对每个文档制定列进行计算 怎样实现

connar520 发布于 2019-05-15 10:18, 1288 次点击
如 在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编辑过]

1 回复
#2
connar5202019-05-15 11:06
回复 楼主 connar520
运行时,主要提示该行出了问题:运行时错424,要求对象

 ActiveSheet.Cells(n, 14) = ActiveSheet.Cells(n, 12) * 86400
1