Excel精英培训网

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

[已解决]EXCEL VBA批量复制

[复制链接]
发表于 2012-8-11 19:29 | 显示全部楼层 |阅读模式
分别将各表名称的数字编号(如2012-007-XX)批量复制到各表sheet1的K6单元格内!!谢谢!
最佳答案
2012-8-11 22:01
本帖最后由 hrpotter 于 2012-8-11 22:02 编辑
福瑞安 发表于 2012-8-11 21:28
Sub test()
    Dim f As String
    Dim reg As Object
  1.     wb.Sheets("数据录入").Range("k6") = .Execute(wb.Name)(0)
复制代码

EXCEL VBA批量复制.zip

7.39 KB, 下载次数: 38

发表于 2012-8-11 20:01 | 显示全部楼层
在源数据表的目录下新建工作簿,把下面的代码拷到新工作簿中,运行一遍就行了
  1. Sub test()
  2.     Dim f As String
  3.     Dim reg As Object
  4.     Dim wb As Workbook
  5.     Application.ScreenUpdating = False
  6.     Set reg = CreateObject("vbscript.regexp")
  7.     With reg
  8.         .Global = True
  9.         .Pattern = "\d+-\d+-\d+"
  10.         f = Dir(ThisWorkbook.Path & "\*.xls")
  11.         Do While Len(f) > 0
  12.             If f <> ThisWorkbook.Name Then
  13.                 Set wb = Workbooks.Open(ThisWorkbook.Path & "" & f)
  14.                 wb.Sheets(1).Range("k6") = .Execute(wb.Name)(0)
  15.                 wb.Close True
  16.             End If
  17.             f = Dir
  18.         Loop
  19.     End With
  20.     Set wb = Nothing
  21.     Application.ScreenUpdating = True
  22. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2012-8-11 21:28 | 显示全部楼层
hrpotter 发表于 2012-8-11 20:01
在源数据表的目录下新建工作簿,把下面的代码拷到新工作簿中,运行一遍就行了

Sub test()
    Dim f As String
    Dim reg As Object
    Dim wb As Workbook
    Application.ScreenUpdating = False
    Set reg = CreateObject("vbscript.regexp")
    With reg
        .Global = True
        .Pattern = "\d+-\d+-\d+"
        f = Dir(ThisWorkbook.Path & "\*.xls")
        Do While Len(f) > 0
            If f <> ThisWorkbook.Name Then
                Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & f)
                wb.数据录入.Range("k6") = .Execute(wb.数据录入)(0)
                wb.Close True
            End If
            f = Dir
        Loop
    End With
    Set wb = Nothing
    Application.ScreenUpdating = True
End Sub

请问把SHEET1改成数据录入怎么就运行不了!
回复

使用道具 举报

发表于 2012-8-11 21:34 | 显示全部楼层
                           
回复

使用道具 举报

发表于 2012-8-11 22:01 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hrpotter 于 2012-8-11 22:02 编辑
福瑞安 发表于 2012-8-11 21:28
Sub test()
    Dim f As String
    Dim reg As Object
  1.     wb.Sheets("数据录入").Range("k6") = .Execute(wb.Name)(0)
复制代码
回复

使用道具 举报

 楼主| 发表于 2012-8-11 22:37 | 显示全部楼层
hrpotter 发表于 2012-8-11 22:01

行了,非常感谢!!!!
回复

使用道具 举报

发表于 2012-10-28 10:19 | 显示全部楼层
很好的代码,谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 01:51 , Processed in 4.928915 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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