Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2544|回复: 3

[已解决]請VBA老師幫忙解答下,謝謝,版主幫忙啊

[复制链接]
发表于 2013-7-5 12:14 | 显示全部楼层 |阅读模式
5学分
對於VBA,我的程度僅會錄製一些簡單的,我錄製好的VBA,點一下可以簡單的處理一個excel的數據。
我想請教下老師們,怎麼才能把錄製好的VBA,點一下,可以自動處理很多個excel的數據,不要每個excel文檔都點一下。
有人建議加個循環遍歷進去,但是我不懂。
壓縮包循環遍歷文件夾裡有5個excel,就是簡單的整理一下那5個excel,最好就是做一個包含VBA的excel,在裡面有個選項,能選擇循環遍歷這個文件夾,然後點擊一下按鈕,就能直接整理所選文件夾裡所有的excel,然後在所選文件夾裡生成一個新的文件夾,裡麵包含整理好的數據,麻煩老師了,萬分感謝。
最佳答案
2013-7-5 12:15

  1. <P>Sub 遍历文件()
  2.     Dim Filename As String, mypath As String, k As Integer
  3.     MsgBox "本工具作用:将把本工具所在文件夹下的并以“.xls”为后缀名的工作簿进行按要求处理!" & Chr(10) & Chr(10) & _
  4.            "处理结果将存在在本文件夹下的指定的《处理完毕》文件夹下面,并且原文件保持不变!" & Chr(10) & Chr(10) & _
  5.            "所以,请您把要处理的工作簿存在在工具所在文件夹下,并且尽量不要多层文件夹管理!" & Chr(10) & Chr(10) & _
  6.            "什么?没有理解?意思就是当文件夹下的子文件夹层数过多时,会导致代码运行错误!" & Chr(10) & Chr(10) & _
  7.            "什么?还不理解?那请你联系作者QQ399457850,无事勿扰!", , "糊涂提示:"
  8.     Application.DisplayAlerts = Fasle    '表示禁止显示提示和警告消息</P>
  9. <P>    Application.ScreenUpdating = False    '表示停止屏幕更新
  10.     mypath = ThisWorkbook.Path & ""
  11.     Filename = Dir(mypath & "*.xls")
  12.     With ActiveSheet
  13.         .Range("A:A").ClearContents
  14.         .Range("A1") = "本次整理的工作表目录"
  15.         Do
  16.             k = k + 1
  17.             .Cells(k + 1, 1) = Filename
  18.             Workbooks.Open mypath & Filename
  19.             With ActiveSheet
  20.                 .Range("A:A,G:K").Delete Shift:=xlToLeft
  21.                 .Cells.EntireColumn.AutoFit
  22.                 .Range("A2:A" & Range("b" & Cells.Rows.Count).End(xlUp).Row).FillDown
  23.                 With .Range("B2:E" & Range("b" & Cells.Rows.Count).End(xlUp).Row)
  24.                     .NumberFormat = "0"
  25.                     .Value = .Value
  26.                 End With
  27.             End With
  28.             ActiveWorkbook.SaveAs Filename:=mypath & "处理完毕" & Filename
  29.             ActiveWorkbook.Close
  30.             Filename = Dir
  31.         Loop Until Filename = "" Or Filename = "整理工具.xls"
  32.     End With
  33.     Application.DisplayAlerts = True    '表示显示提示和警告消息</P>
  34. <P>    Application.ScreenUpdating = True    '表求启用屏幕更新</P>
  35. <P>End Sub</P>
复制代码
循環遍歷.rar (37.49 KB, 下载次数: 9)

this.rar

14.01 KB, 下载次数: 6

最佳答案

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-7-5 12:15 | 显示全部楼层    本楼为最佳答案   

  1. <P>Sub 遍历文件()
  2.     Dim Filename As String, mypath As String, k As Integer
  3.     MsgBox "本工具作用:将把本工具所在文件夹下的并以“.xls”为后缀名的工作簿进行按要求处理!" & Chr(10) & Chr(10) & _
  4.            "处理结果将存在在本文件夹下的指定的《处理完毕》文件夹下面,并且原文件保持不变!" & Chr(10) & Chr(10) & _
  5.            "所以,请您把要处理的工作簿存在在工具所在文件夹下,并且尽量不要多层文件夹管理!" & Chr(10) & Chr(10) & _
  6.            "什么?没有理解?意思就是当文件夹下的子文件夹层数过多时,会导致代码运行错误!" & Chr(10) & Chr(10) & _
  7.            "什么?还不理解?那请你联系作者QQ399457850,无事勿扰!", , "糊涂提示:"
  8.     Application.DisplayAlerts = Fasle    '表示禁止显示提示和警告消息</P>
  9. <P>    Application.ScreenUpdating = False    '表示停止屏幕更新
  10.     mypath = ThisWorkbook.Path & ""
  11.     Filename = Dir(mypath & "*.xls")
  12.     With ActiveSheet
  13.         .Range("A:A").ClearContents
  14.         .Range("A1") = "本次整理的工作表目录"
  15.         Do
  16.             k = k + 1
  17.             .Cells(k + 1, 1) = Filename
  18.             Workbooks.Open mypath & Filename
  19.             With ActiveSheet
  20.                 .Range("A:A,G:K").Delete Shift:=xlToLeft
  21.                 .Cells.EntireColumn.AutoFit
  22.                 .Range("A2:A" & Range("b" & Cells.Rows.Count).End(xlUp).Row).FillDown
  23.                 With .Range("B2:E" & Range("b" & Cells.Rows.Count).End(xlUp).Row)
  24.                     .NumberFormat = "0"
  25.                     .Value = .Value
  26.                 End With
  27.             End With
  28.             ActiveWorkbook.SaveAs Filename:=mypath & "处理完毕" & Filename
  29.             ActiveWorkbook.Close
  30.             Filename = Dir
  31.         Loop Until Filename = "" Or Filename = "整理工具.xls"
  32.     End With
  33.     Application.DisplayAlerts = True    '表示显示提示和警告消息</P>
  34. <P>    Application.ScreenUpdating = True    '表求启用屏幕更新</P>
  35. <P>End Sub</P>
复制代码
循環遍歷.rar (37.49 KB, 下载次数: 9)
回复

使用道具 举报

发表于 2013-7-5 12:27 | 显示全部楼层
文件要怎么处理?
是五个合并还是?
回复

使用道具 举报

发表于 2013-7-5 13:56 | 显示全部楼层
我不是版主,{:021:}
不知能不能回答?{:101:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-28 03:28 , Processed in 0.278798 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表