Excel精英培训网

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

[已解决]打开一个文件下所有文件并操作

[复制链接]
发表于 2013-6-19 13:28 | 显示全部楼层 |阅读模式
我有一个小需求  做一个EXCEL宏 点击之后它可以打开所在文件夹里的所有EXCEL文件,复制第二列内容,依次粘帖到我这个带宏的EXCEL里
我自己写的,没能实现 求帮忙
Sub 按钮1_Click()
Application.ScreenUpdating = False
Dim filename As String
Dim bw As String
Dim mypath As String
mypath = ThisWorkbook.Path
filename = Dir(mypath, vbNormal)
Do While filename <> ""
filenames = Dir
bw = filename
Workbooks.Open filename:=ThisWorkbook.Path & "\" & "bw.XLSm"
Range("C1:C200").Copy
Windows("汇总.xlsM").Activate
i = 1
cell(1, i).Select
ActiveSheet.Paste
Windows("bw.xlsm").Close
i++
Loop
Application.ScreenUpdating = True
End Sub

最佳答案
2013-6-19 14:55
  1. Sub 按钮2_Click()
  2.     Application.ScreenUpdating = False
  3.     Application.DisplayAlerts = False
  4.     Dim filename As String
  5.     Dim mypath As String
  6.     mypath = ThisWorkbook.Path & "\*.*xl*"
  7.     filename = Dir(mypath, vbNormal)
  8.     Do While filename <> ""
  9.         If filename = "汇总.xlsm" Then GoTo 100
  10.         Workbooks.Open filename:=ThisWorkbook.Path & "" & filename
  11.         Range("C1:C200").Copy
  12.         Windows("汇总.xlsM").Activate
  13.         i = i + 1
  14.         Cells(1, i).Select
  15.         ActiveSheet.Paste
  16.         Windows(filename).Close
  17. 100:
  18.         filename = Dir
  19.     Loop
  20.     Application.DisplayAlerts = True
  21.     Application.ScreenUpdating = True
  22. End Sub
复制代码
不好意思汇总.xlsM应改成汇总.xlsm
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-6-19 13:37 | 显示全部楼层
回复

使用道具 举报

发表于 2013-6-19 13:51 | 显示全部楼层
  1. Sub 按钮1_Click()
  2.     Application.ScreenUpdating = False
  3.     Application.DisplayAlerts = False
  4.     Dim filename As String
  5.     Dim mypath As String
  6.     mypath = ThisWorkbook.Path & "\*.*xl*"
  7.     filename = Dir(mypath, vbNormal)
  8.     Do While filename <> ""
  9.         If filename = "汇总.xlsM" Then GoTo 100
  10.         Workbooks.Open filename:=ThisWorkbook.Path & "" & filename
  11.         Range("C1:C200").Copy
  12.         Windows("汇总.xlsM").Activate
  13.         i = i + 1
  14.         Cells(1, i).Select
  15.         ActiveSheet.Paste
  16.         Windows(filename).Close
  17. 100:
  18.         filename = Dir
  19.     Loop
  20.     Application.DisplayAlerts = True
  21.     Application.ScreenUpdating = True
  22. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-6-19 14:26 | 显示全部楼层
lisachen 发表于 2013-6-19 13:51

谢谢哥们啊 但是现在运行会生成一个空表
我把这句隐藏了
'Application.DisplayAlerts = False
'Application.DisplayAlerts = True
会提示是否保修剪切板中内容 我点是 才会生效.
有方法处理么?
还有当打开到汇总表时转到100
100里面 fileNAME=DIR也不对吧
应该当FILENAME= 汇总表时 不打开 要怎么改呢?
万分感谢!!!!
回复

使用道具 举报

 楼主| 发表于 2013-6-19 14:34 | 显示全部楼层
妞叫七七 发表于 2013-6-19 13:37
和这个很相像,你参考一下吧http://www.excelpx.com/thread-303159-1-1.html

大哥 帮我看看现在怎么办  马上就成功了  看下我的回复
回复

使用道具 举报

 楼主| 发表于 2013-6-19 14:41 | 显示全部楼层
回复

使用道具 举报

发表于 2013-6-19 14:42 | 显示全部楼层
a8598048 发表于 2013-6-19 14:26
谢谢哥们啊 但是现在运行会生成一个空表
我把这句隐藏了
'Application.DisplayAlerts = False

  • 为什么要隐藏呢,'Application.DisplayAlerts = True
    目的就是处理你说的问题


    这句就是 If filename = "汇总.xlsM" Then GoTo 100应该当FILENAME= 汇总表时 不打开
回复

使用道具 举报

 楼主| 发表于 2013-6-19 14:50 | 显示全部楼层
lisachen 发表于 2013-6-19 14:42
  • 为什么要隐藏呢,'Application.DisplayAlerts = True
    目的就是处理你说的问题

  • 我是不知道问题出在哪才隐藏的 你说的对 用那句就不会提示了
    但是现在执行后是空的
    因为我看执行的时候有一步提示汇总表已经打卡 是否重新打开  点是就是现在的效果
    如果点否就会报错 WINDOWS.CLOSE  
    问题应该出在这里   
    我这个代码是写在汇总表里的
    也就是说先打开汇总表,然后点按钮, 实现我的功能 .
    现在运行时会出现 汇总表已经打开了 是否重新打开
    请帮帮忙
    回复

    使用道具 举报

     楼主| 发表于 2013-6-19 14:52 | 显示全部楼层
    lisachen 发表于 2013-6-19 14:42
  • 为什么要隐藏呢,'Application.DisplayAlerts = True
    目的就是处理你说的问题

  • 也就是说现在 当FILENAME=汇总表的时候 程序也打开了
    所以我怀疑  100 里的代码 不对
    回复

    使用道具 举报

    发表于 2013-6-19 14:55 | 显示全部楼层    本楼为最佳答案   
    1. Sub 按钮2_Click()
    2.     Application.ScreenUpdating = False
    3.     Application.DisplayAlerts = False
    4.     Dim filename As String
    5.     Dim mypath As String
    6.     mypath = ThisWorkbook.Path & "\*.*xl*"
    7.     filename = Dir(mypath, vbNormal)
    8.     Do While filename <> ""
    9.         If filename = "汇总.xlsm" Then GoTo 100
    10.         Workbooks.Open filename:=ThisWorkbook.Path & "" & filename
    11.         Range("C1:C200").Copy
    12.         Windows("汇总.xlsM").Activate
    13.         i = i + 1
    14.         Cells(1, i).Select
    15.         ActiveSheet.Paste
    16.         Windows(filename).Close
    17. 100:
    18.         filename = Dir
    19.     Loop
    20.     Application.DisplayAlerts = True
    21.     Application.ScreenUpdating = True
    22. End Sub
    复制代码
    不好意思汇总.xlsM应改成汇总.xlsm

    评分

    参与人数 1金币 +1 收起 理由
    a8598048 + 1 很给力!

    查看全部评分

    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-26 14:14 , Processed in 1.098638 second(s), 12 queries , Gzip On, Yac On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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